PostgreSQL 12-release

Het PostgreSQL-team heeft de release aangekondigd van PostgreSQL 12, de nieuwste versie van het open source relationele databasebeheersysteem.
PostgreSQL 12 heeft de queryprestaties aanzienlijk verbeterd, vooral bij het werken met grote hoeveelheden gegevens, en heeft ook het gebruik van schijfruimte in het algemeen geoptimaliseerd.

Nieuwe functies zijn onder meer:

  • implementatie van de JSON Path-querytaal (het belangrijkste onderdeel van de SQL/JSON-standaard);
  • optimalisatie van de uitvoering van algemene tabelexpressies (WITH);
  • ondersteuning voor gegenereerde kolommen

De gemeenschap blijft ook werken aan de uitbreidbaarheid en betrouwbaarheid van PostgreSQL, door ondersteuning te ontwikkelen voor internationalisering, authenticatiemogelijkheden en eenvoudigere manieren te bieden om het systeem te beheren.

Deze release omvat de implementatie van een interface voor plug-in opslag-engines, waarmee ontwikkelaars nu hun eigen methoden voor gegevensopslag kunnen creëren.

Prestatieverbeteringen

PostgreSQL 12 bevat aanzienlijke prestatie- en onderhoudsverbeteringen voor indexerings- en partitioneringssystemen.

B-tree-indexen, het standaardindexeringstype in PostgreSQL, zijn in versie 12 geoptimaliseerd voor werkbelastingen waarbij regelmatig indexwijzigingen plaatsvinden. Het gebruik van de TPC-C-benchmark voor PostgreSQL 12 toonde een gemiddelde vermindering van 40% in het ruimtegebruik en een algehele toename in de queryprestaties.

Query's tegen gepartitioneerde tabellen hebben merkbare verbeteringen ondergaan, vooral voor tabellen die uit duizenden partities bestaan ​​en waarvoor slechts met beperkte delen van de data-arrays hoeft te worden gewerkt. De prestaties van het toevoegen van gegevens aan gepartitioneerde tabellen met behulp van INSERT en COPY zijn verbeterd, evenals de mogelijkheid om een ​​nieuwe partitie te koppelen zonder query's te blokkeren.

PostgreSQL 12 heeft aanvullende verbeteringen aangebracht aan de indexering die van invloed zijn op de algehele prestaties, waaronder:

  • verminderde overhead bij het genereren van WAL voor GiST-, GIN- en SP-GiST-indextypen;
  • de mogelijkheid om zogenaamde dekkingsindexen (INCLUDE-clausule) op GiST-indexen te creëren;
  • de mogelijkheid om “dichtstbijzijnde buur”-zoekopdrachten uit te voeren (k-NN-zoekopdracht) met behulp van de afstandsoperator (<->) en met behulp van SP-GiST-indexen;
  • ondersteuning voor het verzamelen van statistieken over de meest voorkomende waarden (MCV) met behulp van CREATE STATISTICS, wat helpt bij het verkrijgen van betere queryplannen bij het gebruik van kolommen waarvan de waarden ongelijk verdeeld zijn.

JIT-compilatie met LLVM, geïntroduceerd in PostgreSQL 11, is nu standaard ingeschakeld. JIT-compilatie verbetert de prestaties bij het werken met expressies in WHERE-clausules, doellijsten, aggregaten en sommige interne bewerkingen. Het is beschikbaar als u PostgreSQL met LLVM hebt gecompileerd of als u een PostgreSQL-pakket gebruikt dat is gebouwd met LLVM ingeschakeld.

Verbeteringen aan de SQL-taalmogelijkheden en standaardcompatibiliteit

PostgreSQL 12 introduceerde de mogelijkheid om JSON-documenten op te vragen met behulp van JSON-padexpressies die zijn gedefinieerd in de SQL/JSON-standaard. Dergelijke zoekopdrachten kunnen gebruik maken van bestaande indexeringsmechanismen voor documenten die zijn opgeslagen in JSONB-indeling om gegevens efficiënt op te halen.

Algemene tabelexpressies, ook wel WITH-query's genoemd, kunnen nu automatisch worden uitgevoerd met behulp van vervanging in PostgreSQL 12, wat op zijn beurt de prestaties van veel bestaande query's kan helpen verbeteren. In de nieuwe versie kan een vervangingsgedeelte van een WITH-query alleen worden uitgevoerd als het niet recursief is, geen bijwerkingen heeft en er slechts één keer naar wordt verwezen in een volgend gedeelte van de query.

PostgreSQL 12 introduceert ondersteuning voor "gegenereerde kolommen". Dit kolomtype, 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.

Internationalisering

PostgreSQL 12 breidt de ondersteuning voor ICU-collaties uit door gebruikers in staat te stellen "niet-deterministische sorteringen" te definiëren die bijvoorbeeld hoofdletterongevoelige of accentongevoelige vergelijkingen mogelijk maken.

authenticatie

PostgreSQL breidt zijn ondersteuning voor sterke authenticatiemethoden uit met verschillende verbeteringen die extra beveiliging en functionaliteit bieden. Deze release introduceert encryptie aan de client- en serverzijde voor authenticatie via GSSAPI-interfaces, evenals de mogelijkheid voor PostgreSQL om LDAP-servers te ontdekken wanneer PostgreSQL wordt gecompileerd met OpenLDAP.

Bovendien ondersteunt PostgreSQL 12 nu een multi-factor authenticatieoptie. De PostgreSQL-server kan nu van de client eisen dat hij een geldig SSL-certificaat opgeeft met de bijbehorende gebruikersnaam met behulp van clientcert=verify-full, en dit combineren met een afzonderlijke vereiste voor de authenticatiemethode (bijvoorbeeld scram-sha-256).

administratie

PostgreSQL 12 introduceerde de mogelijkheid om niet-blokkerende indexreconstructies uit te voeren met behulp van de opdracht REINDEX CONCURRENTLY. Hierdoor kunnen gebruikers DBMS-downtime tijdens langdurig opnieuw opbouwen van de index voorkomen.

Bovendien kunt u in PostgreSQL 12 paginacontrolesommen in een afsluitcluster in- of uitschakelen met behulp van de opdracht pg_checksums. Voorheen konden paginacontrolesommen, een functie die helpt bij het verifiëren van de integriteit van gegevens die op schijf zijn opgeslagen, alleen worden ingeschakeld wanneer het PostgreSQL-cluster werd geïnitialiseerd met initdb.

Bron: linux.org.ru

Voeg een reactie