pg_squeeze är en öppen källkod PostgreSQL-förlängning som möjliggör automatisk och transparent fixering av uppsvällda tabeller – utan omfattande bordslåsning. Processen fungerar helt i bakgrunden.

VIKTIGASTE FÖRDELARNA

  • Mer aggressiv utrymmesminskning
  • Nära låsfri omorganisering av bord
  • Möjlighet att flytta tabeller mellan tabellutrymmen (utan stillestånd)
  • Möjlighet att gruppera tabeller (utan driftstopp)
  • Inbyggd avancerad schemaläggning
  • Helt öppen källkod

pg_squeeze är inte en ersättning för autovakuum – det är ett tillägg för att utföra saneringar ännu bättre.

PostgreSQL använder en mekanism som kallas ”MVCC” (Multi Version Concurrency Control) för att lagra data. Som namnet redan antyder kommer MVCC att innehålla olika versioner av en rad för att stödja så mycket samtidighet som möjligt. Vid någon tidpunkt måste dessa ytterligare rader tas bort från lagringssystemet och det är här VACUUM kommer.

Till skillnad från de inbyggda kommandona ”VACUUM FULL” eller ”CLUSTER”, med ”pg_squeeze” finns det inga längre perioder av fullbordslåsning, och läsningar och skrivningar blockeras därför inte under ombyggnaden. Ombyggnadsprocessen är också mycket effektiv på grund av en ny metod att använda transaktionsloggfiler och logisk avkodning (i stället för utlösare) för att fånga möjliga dataändringar i tabellen som byggs om. Först och främst hjälper det till att spara diskutrymme och IO-genomströmning, men ännu viktigare, det möjliggör mycket korta låsningstider, vilket gör det perfekt för uppdragskritiska OLTP-system.

Hur fungerar pg_squeeze?

  1. Tillägget implementeras som en bakgrundsarbetarprocess (ett ramverk introducerat i version 9.4) som regelbundet övervakar användardefinierade tabeller.
  2. När den upptäcker att en tabell har överskridit ”tröskelvärdet”,
    det sparkar in och bygger om den tabellen automatiskt.

 

 

Ombyggnad sker samtidigt i bakgrunden med minimal lagring och beräkningskostnader på grund av användningen av Postgres inbyggda replikeringsplatser tillsammans med logisk avkodning för att extrahera möjliga tabelländringar som händer under ombyggnaden från XLOG. Uppblåsningsgränsen är naturligtvis konfigurerbar och beräkningen av uppblåsningsförhållandet baseras på Free Space Map (med hänsyn till FILLFACTOR) eller under vissa förhållanden på tillägget ”pgstattuple” när det är tillgängligt. Dessutom kan många anpassningsparametrar som ”minsta tabellstorlek” ställas in utan att lämpliga tabeller ignoreras. Dessutom är det möjligt att omordna med hjälp av ett index eller flytta tabellen eller indexen till ett nytt tabellutrymme.

Ladda ner pg_squeeze 1.3

Den senaste versionen av pg_squeeze kan laddas ner från github.com.

ladda ner pg_squeeze >>

Licens

PostgreSQL-licens

FAQ

F: Är det säkert? Vad händer när strömmen misslyckas under en ombyggnad av ett bord?

S: Ja, det är säkert eftersom ombyggnad sker i en transaktion. Dessutom kan maximal låsetid också ställas in så att förlängningen kan begränsa den tid det tar att byta bord.

F: Hur skiljer det sig från “pg_repack”?

A: Det är annorlunda i den meningen att det är mer resursvänligt genom att inte använda triggers, det bestämmer automatiskt uppblåsta tabeller i sig och kräver inte ett separat kommandoradsverktyg.

F: Vilka är kraven för att bord ska byggas om?

A: Förutom att träffa ”uppblåsningsgränsen” är det enda hårdkodade kravet att en tabell måste ha en identitetsnyckel, vilket definierar den primära nyckeln eller en unik begränsning.

F: Stöds PostgreSQL version 13?

S: Ja, med den senaste uppdateringen är den.

Vill du veta mer om pg_squeeze?

Kontakta oss >>