PostgreSQL 14 DBMS-release

Na een jaar van ontwikkeling is er een nieuwe stabiele tak van het PostgreSQL 14 DBMS gepubliceerd. Updates voor de nieuwe tak zullen over een periode van vijf jaar worden uitgebracht tot november 2026.

Belangrijkste innovaties:

  • Ondersteuning toegevoegd voor toegang tot JSON-gegevens met behulp van array-achtige expressies: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE details['attributen']['size'] = '"medium"';

    Een vergelijkbare syntaxis wordt geïmplementeerd voor de sleutel-/waardegegevens die door het hstore-type worden geleverd. Deze syntaxis werd aanvankelijk geïmplementeerd met behulp van een universeel raamwerk, dat in de toekomst voor andere typen kan worden gebruikt. Voorbeeld voor hstore-type: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] UIT mijntabel; UPDATE mijntabel SET h['c'] = 'nieuw';

  • De familie van typen voor het definiëren van bereiken is uitgebreid met nieuwe ‘multirange’-typen, waarmee u geordende lijsten met niet-overlappende waardenbereiken kunt opgeven. Naast elk bestaand bereiktype wordt een eigen multibereiktype voorgesteld. Het type “int4range” komt bijvoorbeeld overeen met “int4multirange”, en het type “daterange” komt overeen met “datemultirange”. Het gebruik van nieuwe typen vereenvoudigt het ontwerp van query's die complexe reeksen bereiken manipuleren. SELECTEER '{[3,7), [8,9)}'::int4multirange; SELECTEER aantal meerdere bereiken(aantalbereik(1.0, 14.0), aantalbereik(20.0, 25.0));
  • Er zijn optimalisaties doorgevoerd om de prestaties te verbeteren van systemen met hoge belasting die een groot aantal verbindingen verwerken. Bij sommige tests wordt een tweevoudige prestatieverbetering waargenomen.
  • De efficiëntie van B-tree-indexen is verbeterd en het probleem met indexgroei wanneer tabellen regelmatig worden bijgewerkt, is opgelost.
  • Ondersteuning toegevoegd voor de client-zijde (geïmplementeerd op libpq-niveau) van pijplijntransmissie van verzoeken, waarmee u databasescenario's die verband houden met het uitvoeren van een groot aantal kleine schrijfbewerkingen (INSERT/UPDATE/DELETE) aanzienlijk kunt versnellen door de volgende verzoek zonder te wachten op het resultaat van het vorige. De modus helpt ook bij het versnellen van het werk aan verbindingen met lange vertragingen bij de pakketbezorging.
  • Verbeterde mogelijkheden voor gedistribueerde configuraties waarbij meerdere PostgreSQL-servers betrokken zijn. Bij de implementatie van logische replicatie wordt het nu mogelijk om lopende transacties in streamingmodus te verzenden, wat de prestaties van de replicatie van grote transacties aanzienlijk kan verbeteren. Bovendien is de logische decodering van gegevens die tijdens logische replicatie worden ontvangen, geoptimaliseerd.
  • Het mechanisme voor het verbinden van externe tabellen Foreign Data Wrapper (postgres_fdw) heeft ondersteuning toegevoegd voor parallelle queryverwerking, wat momenteel alleen van toepassing is bij verbinding met andere PostgreSQL-servers. postgres_fdw voegt ook ondersteuning toe voor het toevoegen van gegevens aan externe tabellen in batchmodus en de mogelijkheid om gepartitioneerde tabellen te importeren door de richtlijn “IMPORT FOREIGN SCHEMA” op te geven.
  • Er zijn optimalisaties doorgevoerd in de implementatie van de VACUUM-operatie (garbage collection en packing of disk storage). Er is een noodopruimingsmodus toegevoegd die niet-essentiële opschoonbewerkingen overslaat als er voorwaarden voor het omhullen van transactie-ID's worden gecreëerd. Minder overhead bij het verwerken van indexen in het B-Tree-formaat. De uitvoering van de bewerking “ANALYZE”, die statistieken verzamelt over de werking van de database, is aanzienlijk versneld.
  • De mogelijkheid toegevoegd om de compressiemethode te configureren die wordt gebruikt in het TOAST-systeem, dat verantwoordelijk is voor het opslaan van grote gegevens, zoals tekstblokken of geometrische informatie. Naast de pglz-compressiemethode kan TOAST nu het LZ4-algoritme gebruiken.
  • De tools voor het monitoren van de werking van het DBMS zijn uitgebreid. Weergaven toegevoegd om de voortgang van COPY-opdrachten (pg_stat_progress_copy), statistieken over replicatieslots (pg_stat_replication_slots) en activiteit gerelateerd aan het WAL-transactielogboek (pg_stat_wal) bij te houden. De functie compute_query_id is toegevoegd, waardoor verschillende subsystemen, zoals pg_stat_activity en EXPLAIN VERBOSE, verzoeken kunnen volgen door aan elk verzoek een unieke identificatie toe te wijzen.
  • Er zijn optimalisaties toegevoegd aan de queryplanner om de parallelle verwerking van query's te verbeteren en de prestaties te verbeteren van de gelijktijdige uitvoering van sequentiële recordscanbewerkingen, parallelle uitvoering van query's in PL/pgSQL met behulp van de opdracht "RETURN QUERY", en parallelle uitvoering van query's in " VERFRISSEN GEMATERIALISEERDE AANZICHT”. Om de prestaties van cyclische geneste samenvoegingen (join) te verbeteren, is ondersteuning voor extra caching geïmplementeerd.
  • Geavanceerde statistieken kunnen nu worden gebruikt om uitdrukkingen te optimaliseren, en incrementeel sorteren kan nu worden gebruikt om vensterfuncties te optimaliseren.
  • Opgeslagen procedures waarmee u transacties in codeblokken kunt beheren, ondersteunen nu het definiëren van retourgegevens met behulp van "OUT"-parameters.
  • Datum_bin-functie toegevoegd om tijdstempelwaarden af ​​te ronden volgens een opgegeven interval. SELECT date_bin('15 minuten', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Er zijn SEARCH- en CYCLE-expressies toegevoegd die zijn gedefinieerd in de SQL-standaard om het gemakkelijker te maken om cycli in recursieve Common Table Expressions (CTE) te ordenen en te identificeren. MET RECURSIEVE search_tree(id, link, data) AS (SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WAAR t. id = st.link ) ZOEKDIEPTE EERST OP ID SET ordercol SELECT * UIT zoekboom BESTEL OP ordercol;
  • In het psql-hulpprogramma is het automatisch aanvullen van opdrachten met tabbladen verbeterd, is de mogelijkheid om functieargumenten weer te geven toegevoegd aan de opdracht “\df” en zijn de weergegeven statistieken uitgebreid naar de opdracht “\dX”.
  • Het is mogelijk om alleen-lezen- of alleen-schrijven-rechten aan gebruikers toe te kennen. Privileges kunnen worden ingesteld voor individuele tabellen, weergaven en schema's met behulp van de vooraf gedefinieerde rollen pg_read_all_data en pg_write_all_data. VERLEEN pg_read_all_data AAN gebruiker1;
  • Nieuwe installaties gebruiken standaard wachtwoordverificatie met SCRAM-SHA-256 in plaats van md5 (de parameter "password_encryption" bij het genereren van postgresql.conf is nu ingesteld op 'scram-sha-256').

Bron: opennet.ru

Voeg een reactie