Ottimizzazione intelligente nel server flessibile del Database di Azure per PostgreSQL

Database di Azure per PostgreSQL server flessibile include una funzionalità di ottimizzazione intelligente che migliora automaticamente le prestazioni e aiuta a prevenire i problemi. L'ottimizzazione intelligente monitora continuamente lo stato del database del server flessibile Database di Azure per PostgreSQL e adatta in modo dinamico il database al carico di lavoro.

Questa funzionalità include due funzioni di ottimizzazione automatica:

  • Ottimizzazione autovacuum: questa funzionalità è deprecata e sostituita dal più recente autovacuum adattivo.
  • Ottimizzazione delle scritture: Questa funzione monitora il volume e gli schemi delle operazioni di scrittura. Modifica i parametri che influiscono sulle prestazioni di scrittura. Queste regolazioni migliorano sia le prestazioni del sistema che l'affidabilità e invertono in modo proattivo potenziali complicazioni.

Informazioni su come configurare l'ottimizzazione intelligente.

Perché usare l'ottimizzazione intelligente?

L'ottimizzazione delle operazioni di scrittura all'interno del database è una parte fondamentale della gestione dell'integrità e delle prestazioni di un server flessibile Database di Azure per PostgreSQL. Gli amministratori di database eseguono in genere questa attività. Il monitoraggio costante di un database e l'ottimizzazione delle operazioni di scrittura possono richiedere molto tempo. Questa attività diventa sempre più complessa quando si gestiscono più database.

L'ottimizzazione intelligente semplifica questo processo. Anziché supervisionare e ottimizzare manualmente il database, usare l'ottimizzazione intelligente per monitorare e ottimizzare automaticamente il database. È quindi possibile concentrarsi su altre attività importanti.

La funzione di ottimizzazione delle scritture osserva la quantità e i modelli transazionali delle operazioni di scrittura. Regola in modo intelligente i parametri, ad esempio bgwriter_delay, checkpoint_completion_target, max_wal_size e min_wal_size. In questo modo, migliora le prestazioni e l'affidabilità del sistema, anche in carichi di scrittura elevati.

Quando si usa l'ottimizzazione intelligente, è possibile risparmiare tempo prezioso e risorse basandosi sul server flessibile Database di Azure per PostgreSQL per mantenere le prestazioni ottimali dei database.

Come funziona l'ottimizzazione intelligente?

L'ottimizzazione intelligente è un processo di monitoraggio e analisi continuo che apprende le caratteristiche del carico di lavoro. Tiene inoltre traccia del carico corrente e dell'utilizzo delle risorse, ad esempio CPU o operazioni di I/O al secondo. Non disturba le normali operazioni del carico di lavoro dell'applicazione.

Il processo consente al database di adattarsi dinamicamente al carico di lavoro, determinando le prestazioni di scrittura attuali e l'efficienza dei checkpoint sul server. Usando queste informazioni dettagliate, l'ottimizzazione intelligente distribuisce azioni di ottimizzazione che migliorano le prestazioni del carico di lavoro ed evitano potenziali insidie.

Ottimizzazione scritture

L'ottimizzazione intelligente regola quattro parametri correlati all'ottimizzazione delle scritture: bgwriter_delay, checkpoint_completion_target, max_wal_size e min_wal_size.

Il bgwriter_delay parametro determina la frequenza con cui il processo di scrittura in background viene riattivato per pulire i buffer "dirty" (buffer nuovi o modificati). Il processo di scrittura in background è uno dei tre processi in un server flessibile Database di Azure per PostgreSQL che gestisce le operazioni di scrittura. Gli altri processi sono il processo di checkpoint e le scritture dei back-end (processi client standard, ad esempio le connessioni dell'applicazione).

Il ruolo principale del processo del writer in background consiste nell'alleviare il carico del processo del checkpoint principale e ridurre il carico delle scritture back-end. Il parametro bgwriter_delay regola la frequenza degli arrotondamenti del writer in background. Modificando questo parametro, è anche possibile ottimizzare le prestazioni delle query DML (Data Manipulation Language).

Il parametro checkpoint_completion_target fa parte del secondo meccanismo di scrittura supportato da un server flessibile di Database di Azure per PostgreSQL, nello specifico il processo checkpointer. I checkpoint si verificano a intervalli costanti definiti da checkpoint_timeout (a meno che non venga forzato superando lo spazio configurato). Per evitare di sovraccaricare il sistema di I/O con un picco di scritture di pagine, la scrittura di buffer dirty durante un checkpoint viene distribuita in un periodo di tempo. Il parametro checkpoint_completion_target controlla questa durata usando checkpoint_timeout per specificarla come frazione dell'intervallo di checkpoint.

Il valore predefinito di checkpoint_completion_target è 0,9 (a partire da PostgreSQL 14). Questo valore in genere funziona meglio, perché distribuisce il carico di I/O nel periodo di tempo massimo. In rari casi, i checkpoint potrebbero non terminare in tempo a causa di variazioni impreviste nel numero richiesto di segmenti Write-Ahead Logging (WAL). Il potenziale impatto sulle prestazioni è il motivo per cui checkpoint_completion_target è una metrica di destinazione per l'ottimizzazione intelligente.

Limitazioni e problemi noti

  • L'ottimizzazione intelligente viene effettuata solo in intervalli specifici. È possibile che la funzionalità non apporta modifiche.
  • L'ottimizzazione intelligente non regola le impostazioni ANALYZE.