Eseguire l'ottimizzazione intelligente in Database di Azure per PostgreSQL - Server flessibile

SI APPLICA A: Database di Azure per PostgreSQL - Server flessibile

Database di Azure per PostgreSQL server flessibile dispone di una funzionalità di ottimizzazione intelligente progettata per migliorare automaticamente le prestazioni e 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 funzione tiene traccia del rapporto bloat e regola le impostazioni autovacuum di conseguenza. Fattori nell'utilizzo delle risorse correnti e stimati per evitare interruzioni del carico di lavoro.
  • Scrive l'ottimizzazione: questa funzione monitora il volume e i modelli delle operazioni di scrittura e modifica i parametri che influiscono sulle prestazioni di scrittura. Queste regolazioni migliorano sia le prestazioni del sistema che l'affidabilità, per evitare in modo proattivo potenziali complicazioni.

È possibile abilitare l'ottimizzazione intelligente usando il portale di Azure o l'interfaccia della riga di comando di Azure.

Perché l'ottimizzazione intelligente?

Il processo autovacuum è una parte fondamentale della gestione dell'integrità e delle prestazioni di un database server flessibile Database di Azure per PostgreSQL. Consente di recuperare l'archiviazione occupata da righe "non attive", liberando spazio e mantenendo il database senza problemi.

Altrettanto importante è l'ottimizzazione delle operazioni di scrittura all'interno del database. Questa attività in genere rientra in amministratori di database. 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.

Questo è il punto in cui si trovano i passaggi di ottimizzazione intelligente. Anziché supervisionare e ottimizzare manualmente il database, è possibile usare l'ottimizzazione intelligente per monitorare e ottimizzare automaticamente il database. È quindi possibile concentrarsi su altre attività importanti.

La funzione di ottimizzazione autovacuum nell'ottimizzazione intelligente monitora il rapporto bloat e regola le impostazioni in base alle esigenze per un utilizzo ottimale delle risorse. Gestisce in modo proattivo il processo di "pulizia" del database e riduce i problemi di prestazioni che i dati obsoleti possono causare.

La funzione di ottimizzazione delle scritture osserva la quantità e i modelli transazionali delle operazioni di scrittura. Regola in modo intelligente i parametri, ad bgwriter_delayesempio , checkpoint_completion_target, max_wal_sizee 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 su Database di Azure per PostgreSQL server flessibile per mantenere le prestazioni ottimali dei database.

Come funziona l'ottimizzazione intelligente?

L'ottimizzazione intelligente è un processo di monitoraggio e analisi continuo che non solo apprende le caratteristiche del carico di lavoro, ma tiene 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 regolare dinamicamente il carico di lavoro rilevando il rapporto di bloat corrente, le prestazioni di scrittura e l'efficienza del checkpoint nell'istanza. Con queste informazioni dettagliate, l'ottimizzazione intelligente distribuisce azioni di ottimizzazione che migliorano le prestazioni del carico di lavoro ed evitano potenziali insidie.

Ottimizzazione automatica

L'ottimizzazione intelligente regola cinque parametri correlati a autovacuum: autovacuum_vacuum_scale_factor, autovacuum_cost_limitautovacuum_naptime, autovacuum_vacuum_threshold, e autovacuum_vacuum_cost_delay. Questi parametri regolano i componenti, ad esempio:

  • Frazione della tabella che imposta un VACUUM processo.
  • Limite di ritardo vuoto basato sui costi.
  • Intervallo di pausa tra le esecuzioni di autovacuum.
  • Numero minimo di tuple aggiornate o non aggiornate necessarie per avviare un VACUUM processo.
  • Durata della pausa tra round di pulizia.

Importante

L'ottimizzazione intelligente modifica i parametri correlati all'autovacuum a livello di server, non a singoli livelli di tabella. Inoltre, se autovacuum è disattivato, l'ottimizzazione intelligente non può funzionare correttamente. Per ottimizzare il processo, è necessario abilitare la funzionalità autovacuum.

Anche se il daemon autovacuum attiva due operazioni (VACUUM e ANALYZE), l'ottimizzazione intelligente ottimizza solo il VACUUM processo. Questa funzionalità attualmente non modifica il ANALYZE processo, che raccoglie le statistiche sul contenuto dei sommari per aiutare l'Database di Azure per PostgreSQL server query planner flessibile a scegliere il piano di esecuzione delle query più adatto.

L'ottimizzazione intelligente include misure di sicurezza per misurare l'utilizzo delle risorse, ad esempio CPU e operazioni di I/O al secondo. Non aumenta l'attività autovacuum quando l'istanza è sotto carico elevato. In questo modo, l'ottimizzazione intelligente garantisce un equilibrio tra operazioni di pulizia efficaci e le prestazioni complessive del sistema.

Quando l'ottimizzazione intelligente ottimizza autovacuum, considera il bloat medio del server usando le statistiche sulle tuple attive e inattivi. Per ridurre il bloat, l'ottimizzazione intelligente potrebbe ridurre i parametri come il fattore di scala o il naptime. Potrebbe attivare il VACUUM processo prima e, se necessario, ridurre il ritardo tra round.

D'altra parte, se il bloat è minimo e il processo autovacuum è troppo aggressivo, l'ottimizzazione intelligente potrebbe aumentare parametri come ritardo, fattore di scala e naptime. Questo equilibrio riduce al minimo il bloat e garantisce che il processo autovacuum usi in modo efficiente le risorse.

Ottimizzazione scritture

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

Il bgwriter_delay parametro determina la frequenza con cui il processo di scrittura in background viene risvegliato per pulire i buffer "dirty" (buffer nuovi o modificati). Il processo di scrittura in background è uno dei tre processi in Database di Azure per PostgreSQL server flessibile che gestisce le operazioni di scrittura. L'altro è il processo di checkpoint e le scritture 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 bgwriter_delay parametro regola la frequenza degli arrotondamenti del writer in background. Modificando questo parametro, è anche possibile ottimizzare le prestazioni delle query DML (Data Manipulation Language).

Il checkpoint_completion_target parametro fa parte del secondo meccanismo di scrittura supportato Database di Azure per PostgreSQL server flessibile, in particolare il processo del checkpointer. I checkpoint si verificano a intervalli costanti che definiscono (a meno che checkpoint_timeout 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 checkpoint_completion_target parametro controlla questa durata utilizzando checkpoint_timeout per specificare la durata come frazione dell'intervallo del checkpoint.

Il valore predefinito di checkpoint_completion_target è 0,9 (a partire da PostgreSQL 14). Questo valore funziona in genere meglio, perché distribuisce il carico di I/O nel periodo di tempo massimo. In rari casi, i checkpoint potrebbero non terminare nel tempo a causa di fluttuazioni impreviste nel numero di segmenti di registrazione write-ahead necessari. 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 rende le ottimizzazioni solo in intervalli specifici. È possibile che la funzionalità non apporta modifiche.
  • L'ottimizzazione intelligente non regola ANALYZE le impostazioni.
  • L'ottimizzazione automatica è attualmente supportata per i livelli di calcolo server per utilizzo generico e ottimizzato per la memoria con quattro o più vCore. Il livello di calcolo del server con burst non è supportato.

Passaggi successivi