De PostgreSQL-ontwikkelaarsgroep heeft de releases van PostgreSQL 12 aangekondigd, de nieuwste versie van het relationele databasesysteem met open broncode.
In PostgreSQL 12 is de queryprestaties aanzienlijk verbeterd, vooral voor het werken met grote hoeveelheden gegevens, en is de optimalisatie van het gebruik van schijfruimte als geheel verbeterd.
Onder de nieuwe mogelijkheden:
- de implementatie van de JSON Path-querytaal (een belangrijk onderdeel van de SQL/JSON-norm);
- optimalisatie van de uitvoering van gemeenschappelijke tabeluitdrukkingen (WITH);
- ondersteuning voor gegenereerde kolommen
Ook blijft de gemeenschap werken aan de uitbreidbaarheid en betrouwbaarheid van PostgreSQL, door ondersteuning voor internationalisering, authenticatiemogelijkheden en eenvoudigere systeemadministratie te ontwikkelen.
Deze release bevat de implementatie van een interface voor plug-in opslagengines, waarmee ontwikkelaars nu hun eigen methoden voor gegevensopslag kunnen creƫren.
Prestatieverbeteringen
PostgreSQL 12 omvat aanzienlijke prestatieverbeteringen en onderhoudsprocedures voor index- en partitiesystemen.
B-tree-indexen ā het standaardindexeringstype in PostgreSQL ā zijn in versie 12 geoptimaliseerd voor workloads die frequente wijzigingen in indexen vereisen. Het gebruik van de benchmarktest TPC-C voor PostgreSQL 12 toonde een gemiddelde ruimtebesparing van 40% en een algemene verbetering van de queryprestaties aan.
Queries op gepartitioneerde tabellen hebben aanzienlijke verbeteringen ondergaan, vooral voor tabellen bestaande uit duizenden secties, wat de mogelijkheid biedt om alleen met beperkte delen van gegevensarrays te werken. De prestaties van het toevoegen van gegevens aan gepartitioneerde tabellen met behulp van INSERT en COPY zijn verbeterd, evenals de mogelijkheid om een nieuwe sectie toe te voegen zonder actieve queries te blokkeren.
In PostgreSQL 12 zijn er aanvullende verbeteringen aan indexering doorgevoerd die de algehele prestaties beĆÆnvloeden, waaronder:
- vermindering van overhead bij het genereren van WAL voor GiST-, GIN- en SP-GiST-indextypen;
- de mogelijkheid om zogenaamde dekkende indexen (covering indexes, met de optie INCLUDE) op GiST-indexen te creƫren;
- de mogelijkheid om 'nearest neighbor'-queries (k-NN zoekopdrachten) uit te voeren met behulp van de afstandsoperator () en met SP-GiST-indexen.
- ondersteuning voor het verzamelen van statistieken over de meest voorkomende waarden (most-common value, MCV) met behulp van CREATE STATISTICS, wat helpt bij het verkrijgen van betere query-plannen bij het gebruik van kolommen waarvan de waarden ongelijk verdeeld zijn.
JIT-compilatie met behulp van LLVM, dat in PostgreSQL 11 is geĆÆntroduceerd, is nu standaard ingeschakeld. JIT-compilatie verhoogt de prestaties bij het werken met expressies in WHERE-clausules, doel lijsten, aggregaten en bepaalde interne operaties. Het is beschikbaar als u PostgreSQL met LLVM hebt gecompileerd of een PostgreSQL-pakket gebruikt dat met ingeschakelde LLVM is gemaakt.
Verbeteringen van de SQL-taal en compatibiliteit met de standaard
In PostgreSQL 12 is het mogelijk om queries uit te voeren op JSON-documenten met behulp van JSON-pad-expressies zoals gedefinieerd in de SQL/JSON-standaard. Dergelijke queries kunnen bestaande indexeringsmechanismen voor documenten opgeslagen in JSONB-indeling gebruiken om gegevens efficiƫnt op te halen.
Gemeenschappelijke table-expressies, ook wel bekend als queries met WITH, kunnen in PostgreSQL 12 nu automatisch worden uitgevoerd met substitutie, wat op zijn beurt de prestaties van veel bestaande queries kan verbeteren. In de nieuwe versie kan een deel van de WITH-query alleen worden uitgevoerd met substitutie als het niet recursief is, geen bijwerkingen heeft en slechts ƩƩn keer in het volgende deel van de query wordt aangesproken.
In PostgreSQL 12 wordt ondersteuning voor 'gegenereerde kolommen' geĆÆntroduceerd. Dit type kolom, beschreven in de SQL-standaard, berekent een waarde op basis van de inhoud van andere kolommen in dezelfde tabel. In deze versie ondersteunt PostgreSQL 'opgeslagen gegenereerde kolommen', waarbij de berekende waarde op schijf wordt opgeslagen.
Internationalisatie
PostgreSQL 12 breidt de ondersteuning voor ICU-vergelijkingen uit, waardoor gebruikers 'niet-deterministische vergelijkingen' kunnen definiƫren, die bijvoorbeeld vergelijking zonder hoofdlettergevoeligheid of diakritische tekens mogelijk maken.
Authenticatie
PostgreSQL breidt zijn ondersteuning voor betrouwbare authenticatiemethoden uit met verschillende verbeteringen die extra veiligheid en functionaliteit bieden. Deze release bevat encryptie aan de client- en serverzijde voor authenticatie via GSSAPI-interfaces, evenals de mogelijkheid voor PostgreSQL om te detecteren servers LDAP, als PostgreSQL is gecompileerd met OpenLDAP.
Bovendien ondersteunt PostgreSQL 12 nu de optie voor multifactor-authenticatie. De PostgreSQL-server kan nu van de client verlangen dat deze een geldige SSL-certificaat met de juiste gebruikersnaam aanbiedt met behulp van clientcert=verify-full, en dit combineren met een afzonderlijke authenticatiemethode (zoals scram-sha-256).
Beheer
In PostgreSQL 12 is het mogelijk om niet-blokkerende indexherbouw uit te voeren met behulp van de opdracht REINDEX CONCURRENTLY. Dit stelt gebruikers in staat om downtime van het DBMS te vermijden tijdens langdurige indexherbouw.
Bovendien kan in PostgreSQL 12 de paginacontrole-sum te allen tijde in een uitgezet cluster worden in- of uitgeschakeld met behulp van de opdracht pg_checksums. Eerder kon de paginacontrole-sum, een functie die helpt om de integriteit van de op schijf opgeslagen gegevens te controleren, alleen worden ingeschakeld bij de initiatie van het PostgreSQL-cluster met initdb.
Bron: linux.org.ru
