Autovacuum i PostgreSql

Autovacuum i PostgreSql
Vakuum? Ja, konseptet eksisterer i Postgres -databaser. Når en post blir slettet i postgres, dannes en død tupel og ved hjelp av vakuumkommandoen kan disse døde tuplene fjernes. Etter å ha fjernet de døde tuplene, utføres analysen av postgres på bordet for å oppdatere statistikken. For å utføre vakuumet og analysere handlinger samlet og automatisk, blir autovacuum -kommandoen over postgres brukt. Den utfører både sletting og oppdaterer deretter statistikken . For å få en mer dyptgående forståelse av dette postgres-verktøyet, er denne guiden strukturert for å få innsikt og god praktisk autovacuum i Postgres.

Hvordan Postgres Auto Vacuum fungerer

Autovacuum er bakgrunnsprosessen i Postgres og er aktivert som standard. Imidlertid kan du få innstillingene til Autovacuum ved å navigere til PostgreSql.konf fil.

Som diskutert tidligere, utfører bilvakuumet både støvsuging og analyse. Postgres analyser og støvsug en tabell basert på terskelen beskrevet nedenfor:

For den automatiske støvsugende terskelen til en tabell, brukes følgende ligning:

Autovacuum vakuumterskel = autovacuum_vacuum_scale_factor * nei._of_tuples + autovacuum_vacuum_threshold

Og for å få den automatiske analysering av terskel, gjør følgende ligning jobben:

Autovacuum analysere terskel = autovacuum_analyze_scale_factor * antall tuples + autovacuum_analyze_threshold

Terminologiene som brukes i ovennevnte seksjoner er beskrevet i den kommende delen.

Hvordan du konfigurerer postgres auto vakuum

Auto -vakuumfunksjonaliteten til Postgres avhenger av innstillingene og alternativene som er tilgjengelige i PostgreSQL.Conf -fil. Ved hjelp av beskrivelsen nedenfor kan du endre parametrene for å stille inn automatisk vakuumfunksjonalitet.

Følgende parametere har nøkkelrollen i å definere policy for postgres autovacuum.

  • Autovacuum: Viser standardstatus for automatisk vakuumoppringning.
  • autovacuum_naptime: Parameterens standardverdi er 60 -tallet (1 min), noe som indikerer forskjellen mellom hver Auto Vacuum Wakeup.
  • autovacuum_max_workers: Prosessene som er støvsuget etter napime.
  • autovacuum_vacuum_scale_factor: Denne faktoren leder Auto -vakuumet for å starte prosessen når prosentandelen av den spesifiserte verdien endres. Det er som standard satt til 20%, noe som betyr at Auto -vakuumet vil komme i aksjon når 20% av tabellene/postene er oppdatert.
  • autovacuum_vacuum_threshold: Denne parameteren sikrer at autovakuum må kjøres etter spesifikke (som standard, den er 50) antall tabeller blir oppdatert/endret.
  • autovacuum_analyze_scale_factor: Denne faktoren refererer til analyseprosessen som en autovakuum utfører. Når en spesifikk prosentandel av postene blir oppdatert/endret, utfører tabellen analysen.
  • autovacuum_analyze_threshold: Når spesifikke antall tabeller møter oppdateringer, og terskelen er oppfylt, begynner Auto -vakuumet å analysere tabellen, og standardverdien til denne parameteren er 50.

For å redigere filen, kan du åpne den i en Nano -redaktør ved å bruke kommandoen angitt nedenfor (plasseringen av PostgreSQL.Conf -filen kan variere i ditt tilfelle):

$ sudo nano/etc/postgreSql/12/main/postgreSql.konf

Hvordan konfigurere automatisk vakuumparametere for en tabell

De PostgreSql.konf Filen omhandler de globale endringene i autovacuumparametrene. Du kan imidlertid stille inn parametere for en enkelt tabell. For eksempel har vi brukt følgende parametere for Linuxhint Tabell over databasen MYDB:

  • autovacuum_vacuum_scale_factor = 0.2
  • autovacuum_vacuum_threshold = 30
  • autovacuum_analyze_scale_factor = 0.2
  • autovacuum_analyze_threshold = 20

Disse parametrene vil bli passert med Alter Table Statement of PowerShell, og Alter -tabellen vil bli brukt på Linuxhint -tabellen som vist nedenfor:

> ALTER TABELL Linuxhint Set (Autovacuum_Vacuum_scale_Factor = 0.2, autovacuum_vacuum_threshold = 30, autovacuum_analyze_scale_factor = 0.2, autovacuum_analyze_threshold = 20);

Det kan beregnes manuelt ved å sette inn verdiene i ligningene gitt i delen ovenfor og er som følger. Anta at Linuxhint -tabellen inneholder 10 tuples:

Vakuumoperasjonen av autovacuum beregnes som vist nedenfor. Utgangen viser at vakuumoperasjonen av autovacuum vil bli utført når antallet foreldede poster når 31.

Autovacuum vakuumterskel for Linuxhint -tabell = (0.2 * 5) + 30 = 31

Tilsvarende vil analysere driften av Autovacuum på Linuxhint -tabellen bli utført når antallet innsettinger/slettinger/oppdatering lik eller overstiger 21.

Autovacuum Analyse av Linuxhint -tabell = (0.2*5) + 20 = 21

Hvorfor bilvakuum

Når vi ser på arbeid og diskusjonen ovenfor, kan følgende fordeler med autovakuum trekkes ut:

  • Plassen styres effektivt ved å slette de døde cellene
  • Analysering og støvsuging er lagret når den utføres automatisk
  • Bordoppblåsthet oppstår ikke da sletting av døde tuples oppstår automatisk, og dermed overløper ikke tabellen.
  • Autovacuum kan utføres parallelt manerer. For eksempel låser ikke autovacuum bordet som det manuelle vakuumet gjør.

Konklusjon

Auto -vakuumfunksjonaliteten til Postgres lar deg utføre vakuumet og analysere tabellene til en database. Selv om man kan vakuum og analysere manuelt, vil det automatiserte vakuumet gjøre begge deler. Denne artikkelen gir detaljert informasjon om bilvakuumfunksjonaliteten til Postgres. Postgres beregner terskelverdier for hver tabell og bestemmer deretter om de skal støvsuge eller analysere den tabellen. Videre har vi gitt Postgres ligninger for å beregne vaksumet og analysere terskel.