Ifølge StackOverflow er PostgreSQL den mest populære open source-database, hvor flere og flere udviklere og administratorer ønsker at arbejde med den. PostgreSQL 14, den seneste version udgivet i september 2021, har mere end 200 forbedringer og nye funktioner, som stort set falder ind under tre områder:Sikkerhed, Ydelse og Overvågning.
Begyndende i version 1.9.2, udgivet tidligere i år, understøtter ClusterControl nu den seneste version af PostgreSQL 14.
I dette indlæg vil vi se på de mest bemærkelsesværdige funktioner, store opdateringer og forbedringer, der er tilgængelige i PostgreSQL 14.
Sikkerhed
PostgreSQL 14s vigtigste sikkerhedsændring flytter til SCRAM som standardgodkendelse, efter at SCRAM-SHA-256-godkendelse først blev introduceret i PostgreSQL 10. SCRAM giver en meget mere enkel og kraftfuld løsning til at regulere overholdelse af data sikkerhed. Den tidligere standard MD5-godkendelse har tidligere haft nogle udnyttede svagheder.
Sammen med forbedret godkendelse forenkler PostgreSQL 14 processen med at tildele skrive- og skrivebeskyttede funktioner til brugere på tabeller, visninger og skemaer ved at introducere to foruddefinerede roller, pg_write_all_data og pg_read_all_data. Den førstnævnte rolle gør det praktisk at oprette superbruger-stilede privilegier. På trods af at det er praktisk til aktiviteter og adgang, skal denne form for konto bruges sparsomt. Sidstnævnte rolle gør den praktisk til at give en bruger skrivebeskyttet adgang til alle tabeller, skemaer og visninger i databasen. Denne rolle vil som standard have læseadgang til alle nyoprettede tabeller.
Ydeevne
Selskaber behandler flere og flere data, og hastigheden, volumen og variationen (de tre kontra Big Data) viser ingen tegn på at blive langsommere. PostgreSQL 14 har foretaget nogle meget væsentlige ændringer for at kunne skalere op og ud for at understøtte disse arbejdsbelastninger og forbedre ydeevnen. Dette kan bedst grupperes i følgende fem områder:
Skalerbarhed og ydeevne
PostgreSQL 14 leverer enorme resultater i udførelsen af sletninger og opdateringer på tabeller med et stort antal partitioner. Dette tillader sletninger og opdateringer på partitionerede tabeller for at bruge partitionsbeskæring under udførelsestid. Vigtigst er det, at denne version kan skaleres til flere partitioner end før, hvilket tillader PostgreSQL at klare meget større databaser, end det tidligere var muligt.
I PostgreSQL version 14 kan partitioner nu også adskilles samtidigt, hvilket gør det nemmere at administrere store tidsseriedatatabeller. Dette er muligt på grund af den nye date_bin() funktion, der giver brugerne mulighed for at opsummere tidsseriedata i datointervaller bedre og nemmere.
PostgreSQL 14 tilføjede understøttelse af LZ4-komprimering til TOAST. LZ4 bruger den nyeste komprimeringsteknologi og fokuserer på at forbedre hastigheden af dekompression og komprimering af dokumentdata. LZ4 vil forbedre applikationer med større XML- og JSON-dokumenter, og denne komprimeringsalgoritme kan konfigureres på både system- og kolonneniveau.
Distribuerede databaser og arbejdsbelastninger
PostgreSQL 14 tilbyder også forbedringer i horisontal skalering af en database ved at introducere to store forbedringer i postgres_fdw (foreign data wrapper), som er medvirkende til at forbedre ydeevnen for distribuerede databaser. Disse ændringer understøtter masseindsættelse af data og parallelle tabelscanninger på fremmede tabeller (når async_capable er indstillet).
Caching af forbindelse forbedrer også ydeevnen ved at tillade forbindelser at være åbne på tværs af transaktioner. Vi kan også nævne Libpd pipeline mode, som øger ydeevnen af distribuerede databaser ved at tillade strømme af ændringer at blive transmitteret uden at vente på netværksbekræftelse på hver kommando.
Håndterbarhed
PostgreSQL 14 adresserer også problemet med B-tree index bloat; indekser, der ofte opdateres, svulmer op over tid på grund af døde tupler, der kan fjernes ved at køre et vakuum.
På grund af dette kan en irreversibel sideopdeling være forårsaget af en indsættelse eller opdatering, når siden bliver fyldt op mellem støvsugerne. Denne version har forbedret vakuumprocessen ved at detektere og fjerne døde tuples mellem støvsugere (INDEX_CLEANUP parameter sat til Auto).
En anden forbedring af vakuumsystemet er at fjerne slettede sider ivrigt. I tidligere versioner tog fjernelse af slettede sider to vakuumcyklusser, ved først at markere siden som slettet og den anden cyklus faktisk frigøre den plads.
Justering af forespørgsels- og indeksydelse
Indeksstyring i applikationsindstilling er en anden stor forbedring i PostgreSQL 14. Specielt GENINDEKSER SAMTIDIGT og OPRET INDEKS SAMTIDIGT tillader flere kommandoer at køre på én gang uden at forstyrre hinanden. Mere om indekser, BRIN-indekser er blevet mere fleksible, da de kan registrere adskillige min/maks-værdier pr. område, hvilket er værdifuldt for grupper af værdier i hvert sideområde. Desuden arbejder BRIN-indekser effektivt med data, der ikke er vellokaliseret i heapen, ved at bruge bloom-filtre.
Frys-indstillingen i COPY-kommandoen er blevet forbedret ved at opdatere sidesynlighedsbits om dataindlæsningsydelse. Binær-mode COPY er nu også hurtigere.
PostgreSQL 14 har forfinet forespørgselsparallelisme ved at tilføje forespørgselsparallelisme til REFRESH MATERIALIZED VIEW og RETURN QUERY. Disse forbedringer er blevet rullet ud til indlejrede loop-sammenføjninger og parallelle sekventielle scanninger.
PostgreSQL 14 har øget antallet af steder, hvor udvidet statistik kan bruges til udtryk og OR-sætningsvurdering. I modsætning til tidligere, hvor statistik kun var på kolonner, er det nu tilladt på en gruppe af udtryk. Systemvisning pg_stats_ext_exprs rapporterer sådanne statistikker.
Forbedret logisk replikering
Logisk replikering er blevet forbedret for at tillade streaming af lange igangværende transaktioner via API'et eller til abonnenter. I tidligere versioner blev transaktioner større end logical_decoding_work_mem skrevet til disken, indtil transaktionen blev gennemført, før transaktionen blev replikeret til abonnenten. Med de nye forbedringer på plads håndterer logisk replikering store mængder DDL-sætninger mere effektivt.
Efter hver kommando skriver logisk replikering cache-invalideringsmeddelelser til WAL til behandling ved at streame igangværende transaktioner. Denne proces skaber betydelige præstationsfordele.
Overvågning
Et af de største buzzwords i 2022 er overvågning, da administratorer og udviklere ønsker mere indsigt i ydeevne over tid. PostgreSQL 14 har introduceret nye funktioner til at hjælpe med overvågning. Den vigtigste ændring af dem alle er flytningen af forespørgselshash-systemet fra pg_stat_statement til kernedatabasen. Forespørgselsovervågning er blevet tilladt på tværs af flere PostgreSQL-systemer og logningsfunktioner ved at bruge et enkelt ID.
Denne version har også introduceret følgende nye overvågningsparametre:
-
Idle_session_timeout
-
REINDEX på underordnede indekser af en opdelt tabel
-
Maintenance_io_concurrency
-
Pg_stat_progress_copy
-
Pg_stat_wal
Opgradering til PostgreSQL 14
Hvis du vil opgradere din nuværende PostgreSQL-version til version 14, har du tre hovedmuligheder, som vil udføre denne opgave:
-
Pg_dumpall:Det er et logisk backupværktøj, der giver dig mulighed for at dumpe dine data og gendanne dem i den nye PostgreSQL version. Her vil du have en nedetidsperiode, der vil variere i henhold til din datastørrelse. Du skal stoppe systemet eller undgå nye data i den primære node, køre pg_dumpall, flytte det genererede dump til den nye databasenode og gendanne det. I dette tidsrum kan du ikke skrive ind i din primære PostgreSQL-database for at undgå datainkonsistens.
-
Pg_upgrade:Det er et PostgreSQL-værktøj til at opgradere din PostgreSQL-version. Det kan være farligt i et produktionsmiljø, og vi anbefaler ikke denne metode i så fald. Ved at bruge denne metode vil du have nedetid, men det vil sandsynligvis være betydeligt mindre end ved at bruge den tidligere pg_dump-metode.
-
Logisk replikering:Siden PostgreSQL 10 kan du bruge denne replikeringsmetode, som giver dig mulighed for at udføre større versionsopgraderinger med nul (eller næsten nul) nedetid. På denne måde kan du tilføje en standby-node i den sidste PostgreSQL-version, og når replikeringen er opdateret, kan du udføre en failover-proces for at fremme den nye PostgreSQL-node.
For mere detaljeret information om de nye PostgreSQL 14-funktioner, kan du se den officielle dokumentation.
Afslutning
PostgreSQL 14 har virkelig forbedret spillet for brugere af denne populære open source-database. Nu har udviklere og administratorer forbedrede muligheder for at øge høj ydeevne og skalerbarhed, forbedringer til distribuerede databaser, forbedret observerbarhed og mere.
ClusterControl gør opgradering til de nyeste teknologiversioner enkel og stressfri. Hvis du ikke allerede bruger ClusterControl, kan du evaluere det gratis i 30 dage. For flere detaljer om den seneste udgivelse af ClusterControl 1.9.2, se de fulde udgivelsesbemærkninger.
Hold dig ajour med alle de seneste nyheder og bedste praksis for de mest populære open source-databaser ved at følge os på Twitter og LinkedIn og abonnere på vores nyhedsbrev.