Autovacuum in PostgreSQL

Autovacuum in PostgreSQL
Vuoto? Sì, il concetto esiste nei database Postgres. Quando un record viene eliminato in Postgres, viene formata una tupla morta e con l'aiuto del comando vuoto, queste tuple morte possono essere rimosse. Dopo aver rimosso le tuple morte, l'azione di analizza di Postgres viene eseguita sulla tabella per aggiornare le statistiche. Per eseguire il vuoto e analizzare le azioni collettivamente e automaticamente, viene utilizzato il comando Autovacuum di Postgres. Esegue sia la cancellazione che quindi aggiorna le statistiche . Per ottenere una comprensione più approfondita di questa utilità di Postgres, questa guida è strutturata per ottenere approfondimenti e un buon Autovacuum pratico a Postgres.

Come funziona il vuoto automatico Postgres

L'autovacuum è il processo di fondo in Postgres ed è abilitato per impostazione predefinita. Tuttavia, è possibile ottenere le impostazioni di Autovacuum navigando al Postgresql.conf file.

Come discusso in precedenza, il vuoto automatico esegue l'aspirazione e l'analisi. Analisi e aspirano Postgres Una tabella in base alla soglia descritta di seguito:

Per la soglia di aspirazione automatica di una tabella, viene utilizzata la seguente equazione:

AutovaCuum Vacuum Soglia = Autovacuum_vacuum_scale_factor * no._of_tuples + autovacuum_vacuum_threshold

E per ottenere la soglia di analisi automatica, la seguente equazione fa il lavoro:

AutovaCuum Analyze soglia = Autovacuum_analyze_scale_factor * Numero di tuple + autovacuum_analyze_threshold

Le terminologie utilizzate nelle sezioni di cui sopra sono descritte nella prossima sezione.

Come configurare il vuoto automatico di Postgres

La funzionalità del vuoto automatico di Postgres dipende dalle impostazioni e dalle opzioni disponibili all'interno di PostgreSQL.Conf File. Con l'aiuto della descrizione fornita di seguito, è possibile modificare i parametri per sintonizzare la funzionalità del vuoto automatico.

I seguenti parametri hanno il ruolo chiave nella definizione della politica per Postgres Autovacuum.

  • Autovacuum: Mostra lo stato predefinito per la chiamata a vuoto automatico.
  • Autovacuum_naptime: Il valore predefinito del parametro è il 60S (1min), che indica la differenza tra ciascun risveglio del vuoto automatico.
  • Autovacuum_max_workers: I processi che vengono aspirati dopo il nastro.
  • Autovacuum_vacuum_scale_factor: Questo fattore indirizza il vuoto automatico per avviare il processo quando viene modificata la percentuale del valore specificato. Per impostazione predefinita è impostato al 20%, il che significa che il vuoto automatico entrerà in azione quando il 20% delle tabelle/record viene aggiornato.
  • Autovacuum_vacuum_threshold: Questo parametro garantisce che il vuoto automatico debba essere eseguito dopo specifico (per impostazione predefinita, è 50) i numeri di tabelle vengono aggiornati/modificati.
  • Autovacuum_analyze_scale_factor: Questo fattore si riferisce al processo di analisi che esegue un vuoto automatico. Quando una percentuale specifica di record viene aggiornata/modificata, la tabella esegue l'analisi.
  • Autovacuum_analyze_threshold: Quando i numeri specifici di tabelle incontrano aggiornamenti e la soglia viene soddisfatta, il vuoto automatico inizia ad analizzare la tabella e il valore predefinito di questo parametro è 50.

Per modificare il file, è possibile aprirlo in un editor Nano utilizzando il comando indicato di seguito (la posizione di PostgreSQL.Il file conf può variare nel tuo caso):

$ sudo nano/etc/postgresql/12/main/postgresql.conf

Come configurare i parametri del vuoto automatico per una tabella

IL Postgresql.conf Il file tratta le modifiche globali ai parametri Autovacuum. Tuttavia, puoi sintonizzare i parametri per una singola tabella. Ad esempio, abbiamo usato i seguenti parametri per il Linuxhint Tabella del database mydb:

  • Autovacuum_vacuum_scale_factor = 0.2
  • Autovacuum_vacuum_threshold = 30
  • Autovacuum_analyze_scale_factor = 0.2
  • Autovacuum_analyze_threshold = 20

Questi parametri verranno approvati con l'istruzione di PowerShell alter Tabella e la tabella Alter verrà applicata sulla tabella LinuxHint come mostrato di seguito:

> Alter Table LinuxHint Set (Autovacuum_vacuum_scale_factor = 0.2, autovacuum_vacuum_threshold = 30, autovacuum_analyze_scale_factor = 0.2, autovacuum_analyze_threshold = 20);

Può essere calcolato manualmente inserendo i valori nelle equazioni indicate nella sezione sopra ed è le seguenti. Supponiamo che la tabella Linuxhint contenga 10 tuple:

Il funzionamento del vuoto di Autovacuum viene calcolato come mostrato di seguito. L'output mostra che il funzionamento del vuoto di Autovacuum verrà eseguito quando il numero di record obsoleti raggiunge 31.

Soglia di aspirapolvere Autovacuum della tabella LinuxHint = (0.2 * 5) + 30 = 31

Allo stesso modo, il funzionamento di analizzare l'autovacuum sulla tabella LinuxHint verrà effettuato quando il numero di inserzioni/eliminazioni/aggiornamento è uguale o supera 21.

AutovaCuum Analyze of LinuxHint Tabella = (0.2*5) + 20 = 21

Perché aspirare auto

Guardando il lavoro e la discussione di cui sopra, è possibile estrarre i seguenti vantaggi del vuoto auto:

  • Lo spazio viene gestito efficacemente eliminando le cellule morte
  • Il tempo di analisi e aspirazione viene risparmiata in quanto viene effettuata automaticamente
  • Il gonfiore della tabella non si verifica poiché la cancellazione di tuple morte si verifica automaticamente e quindi la tabella non trabocca.
  • Autovacuum può essere eseguito in maniere parallele. Ad esempio, Autovacuum non blocca il tavolo come fa il vuoto manuale.

Conclusione

La funzionalità del vuoto automatico di Postgres consente di eseguire il vuoto e analizzare le tabelle di un database. Anche se si può aspirare e analizzare manualmente, il vuoto automatizzato farà entrambe le cose. Questo articolo fornisce informazioni dettagliate sulla funzionalità del vuoto automatico di Postgres. Postgres calcola i valori di soglia per ciascuna tabella e quindi decide se aspirare o analizzare quella tabella. Inoltre, abbiamo fornito le equazioni di Postgres per calcolare il vaccum e analizzare la soglia.