PostgreSQL-gruppen har annonceret udgivelsen af PostgreSQL 12, den nyeste version af det relationelle databashåndteringssystem med åbent kildekode.
I PostgreSQL 12 er ydeevnen for forespørgsler blevet betydeligt forbedret - især når det kommer til store datamængder, og der er også blevet optimeret for pladsforbrug generelt.
Blandt de nye funktioner:
- implementering af JSON Path forespørgselsprog (en vigtig del af SQL/JSON-standarden);
- optimering af udførelsen af almindelige tabeludtryk (WITH);
- support for genererede kolonner
Desuden fortsætter fællesskabet med at arbejde på udvidelsesmuligheder og pålidelighed i PostgreSQL, ved at udvikle støtte til internationalisering, autentifikationsmuligheder og tilbyde lettere administrationsveje for systemet.
Denne udgivelse inkluderer implementeringen af et grænseflade til plug-in lagringsmotorer, hvilket nu giver udviklere mulighed for at skabe deres egne metoder til datalagring.
Ydelsesforbedringer
PostgreSQL 12 indeholder betydelige forbedringer af ydeevne og vedligeholdelsesprocedurer for indeks- og partitioneringssystemer.
B-tree indekser - den standard type indeksering i PostgreSQL, er blevet optimeret i version 12 for belastninger, der indebærer hyppige ændringer af indekser. Anvendelsen af standardtesten TPC-C for PostgreSQL 12 har vist et gennemsnitligt fald i pladsforbrug på 40% og en samlet stigning i forespørgselsydelse.
Forespørgsler til partitionerede tabeller har fået mærkbare forbedringer, især for tabeller bestående af tusinder af sektioner, der kun involverer arbejde med begrænsede dele af datamængder. Ydeevnen ved tilføjelse af data til partitionerede tabeller ved hjælp af INSERT og COPY er også blevet forbedret, samt muligheden for at tilslutte en ny sektion uden at blokere igangværende forespørgsler.
I PostgreSQL 12 er der foretaget yderligere forbedringer i indeksering, der påvirker den samlede ydeevne, herunder:
- reduktion af overhead ved generering af WAL for typer af indekser som GiST, GIN og SP-GiST;
- muligheden for at skabe såkaldte dækende indekser (covering indexes, forslag INCLUDE) på GiST-indekser;
- muligheden for at udføre såkaldte "nærmeste nabo"-forespørgsler (k-NN search) ved hjælp af afstandsoperatoren () og brug af SP-GiST indekser;
- støtte til indsamling af statistik for de mest almindelige værdier (most-common value, MCV) ved hjælp af CREATE STATISTICS, hvilket hjælper med at opnå bedre udførelsesplaner for forespørgsler, når der arbejdes med kolonner, hvis værdier er ulige fordelt.
JIT-kompilering ved hjælp af LLVM, som blev introduceret i PostgreSQL 11, er nu aktiveret som standard. JIT-kompilering gør det muligt at forbedre ydeevnen ved behandling af udtryk i WHERE-sætninger, mål-lister, aggregationer samt nogle interne operationer. Det er tilgængeligt, hvis du har kompileret PostgreSQL med LLVM eller bruger en PostgreSQL-pakke, der er bygget med aktiveret LLVM.
Forbedringer af SQL-sprogets funktioner og overholdelse af standarden.
I PostgreSQL 12 er det nu muligt at udføre forespørgsler på JSON-dokumenter ved hjælp af JSON-sløjfer, som er defineret i SQL/JSON-standarden. Sådanne forespørgsler kan drage fordel af eksisterende indeksmekanismer til dokumenter, der gemmes i JSONB-format, for effektiv dataudtrækning.
Common Table Expressions, også kendt som forespørgsler med WITH, kan i PostgreSQL 12 nu automatisk udføres med substitution, hvilket kan hjælpe med at forbedre ydeevnen for mange eksisterende forespørgsler. I den nye version kan dele af WITH-forespørgslen udføres med substitution, såfremt de ikke er rekursive, ikke har bivirkninger, og de kun henvises til én gang i den følgende del af forespørgslen.
PostgreSQL 12 introducerer understøttelse af "genererede kolonner". Denne kolonne type, der er beskrevet i SQL-standarden, beregner værdien baseret på indholdet af andre kolonner i den samme tabel. I denne version understøtter PostgreSQL "persistente genererede kolonner", hvor den beregnede værdi gemmes på disken.
Internationalisering
PostgreSQL 12 udvider understøttelsen af ICU-sammenligninger, hvilket gør det muligt for brugere at definere "ikke-deterministiske sammenligninger", der f.eks. kan tillade sammenligninger uden hensyn til store og små bogstaver eller accenter.
Godkendelse
PostgreSQL udvider sin understøttelse af pålidelige autentifikationsmetoder med flere forbedringer, der giver ekstra sikkerhed og funktionalitet. Denne udgave indeholder kryptering på klient- og server-siden til autentifikation via GSSAPI-interfacer, samt muligheden for, at PostgreSQL kan opdage... servere LDAP, hvis PostgreSQL er kompileret med OpenLDAP.
Derudover understøtter PostgreSQL 12 nu en variant af multifaktorautentificering. Nu kan PostgreSQL-serveren anmode klienten om at levere et gyldigt SSL-certifikat med det tilsvarende brugernavn ved hjælp af clientcert=verify-full, og kombinere dette med et separat krav om autentificeringsmetode (f.eks. scram-sha-256).
Administration
I PostgreSQL 12 er det blevet muligt at udføre ikke-blokerende genopbygning af indekser med kommandoen REINDEX CONCURRENTLY. Dette gør det muligt for brugerne at undgå driftsstop i databasesystemet under langvarig genopbygning af indekser.
Derudover kan man i PostgreSQL 12 aktivere eller deaktivere sidechecksummer i en klynge, der er slukket, ved hjælp af kommandoen pg_checksums. Tidligere kunne sidechecksummer - en funktion, der hjælper med at kontrollere integriteten af de data, der er gemt på disken - kun aktiveres på tidspunktet for initialisering af PostgreSQL-klyngen med initdb.
Kilde: linux.org.ru
