PostgreSQL 14 DBMS-utgivelse

Etter et år med utvikling har en ny stabil gren av PostgreSQL 14 DBMS blitt publisert. Oppdateringer for den nye grenen vil bli utgitt over fem år frem til november 2026.

Hovedinnovasjoner:

  • Lagt til støtte for tilgang til JSON-data ved å bruke array-lignende uttrykk: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE detaljer['attributes']['size'] = '"medium"';

    En lignende syntaks er implementert for nøkkel-/verdidataene levert av hstore-typen. Denne syntaksen ble opprinnelig implementert ved hjelp av et universelt rammeverk, som i fremtiden kan brukes til andre typer. Eksempel for hstore-type: INSERT INTO mytable VALUES ('a=>b, c=>d'); VELG h['a'] FRA mytable; OPPDATERING mytable SET h['c'] = 'ny';

  • Familien av typer for å definere områder har blitt utvidet med nye "flerområde"-typer, som lar deg spesifisere ordnede lister over ikke-overlappende verdiområder. I tillegg til hver eksisterende rekkeviddetype foreslås en egen flerområdetype, for eksempel tilsvarer typen «int4range» «int4multirange», og typen «daterange» tilsvarer «datemultirange». Bruken av nye typer forenkler utformingen av spørringer som manipulerer komplekse sekvenser av områder. VELG '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(antallrange(1.0, 14.0), numrange(20.0, 25.0));
  • Optimaliseringer er gjort for å forbedre ytelsen til høylastsystemer som behandler et stort antall tilkoblinger. I noen tester observeres en dobling av ytelsen.
  • Effektiviteten til B-treindekser er forbedret og problemet med indeksvekst når tabeller oppdateres ofte er løst.
  • Lagt til støtte for klientsiden (implementert på libpq-nivå) modus for rørledningsoverføring av forespørsler, som lar deg øke hastigheten betydelig på databasescenarier knyttet til å utføre et stort antall små skriveoperasjoner (INSERT/UPDATE/DELETE) ved å sende neste forespørsel uten å vente på resultatet av den forrige. Modusen bidrar også til å fremskynde arbeidet med forbindelser med lange pakkeleveringsforsinkelser.
  • Forbedrede muligheter for distribuerte konfigurasjoner som involverer flere PostgreSQL-servere. I implementeringen av logisk replikering blir det nå mulig å sende transaksjoner som pågår i strømmemodus, noe som kan forbedre ytelsen til replikering av store transaksjoner betydelig. I tillegg har den logiske dekodingen av data mottatt under logisk replikering blitt optimalisert.
  • Mekanismen for å koble til eksterne tabeller Foreign Data Wrapper (postgres_fdw) har lagt til støtte for parallell spørringsbehandling, som foreløpig kun gjelder ved tilkobling til andre PostgreSQL-servere. postgres_fdw legger også til støtte for å legge til data til eksterne tabeller i batch-modus og muligheten til å importere partisjonerte tabeller ved å spesifisere "IMPORT FOREIGN SCHEMA"-direktivet.
  • Optimaliseringer er gjort for implementeringen av VACUUM-operasjonen (søppelinnsamling og pakking av disklagring). En nødoppryddingsmodus er lagt til som hopper over ikke-essensielle oppryddingsoperasjoner hvis transaksjons-ID-omslutningsbetingelser er opprettet. Redusert overhead ved behandling av indekser i B-Tree-formatet. Utførelsen av «ANALYSE»-operasjonen, som samler inn statistikk om driften av databasen, har blitt betydelig fremskyndet.
  • Lagt til muligheten til å konfigurere komprimeringsmetoden som brukes i TOAST-systemet, som er ansvarlig for lagring av store data, for eksempel tekstblokker eller geometrisk informasjon. I tillegg til pglz-komprimeringsmetoden kan TOAST nå bruke LZ4-algoritmen.
  • Verktøyene for å overvåke driften av DBMS er utvidet. Lagt til visninger for å spore fremdriften til COPY-kommandoer (pg_stat_progress_copy), statistikk om replikeringsspor (pg_stat_replication_slots) og aktivitet relatert til WAL-transaksjonsloggen (pg_stat_wal). Compute_query_id-funksjonen er lagt til, som gjør at ulike undersystemer, som pg_stat_activity og EXPLAIN VERBOSE, kan spore forespørsler ved å tilordne en unik identifikator for hver forespørsel.
  • Optimaliseringer er lagt til spørringsplanleggeren for å forbedre parallell prosessering av spørringer og forbedre ytelsen til samtidig utførelse av sekvensielle postskanneoperasjoner, parallell utførelse av spørringer i PL/pgSQL ved bruk av “RETURN QUERY”-kommandoen, og parallell utførelse av spørringer i “ OPPFRISK MATERIALISERT VISNING». For å forbedre ytelsen til sykliske nestede sammenslåinger (join), har støtte for ytterligere caching blitt implementert.
  • Avansert statistikk kan nå brukes til å optimalisere uttrykk, og inkrementell sortering kan nå brukes til å optimalisere vindusfunksjoner.
  • Lagrede prosedyrer som lar deg administrere transaksjoner i kodeblokker støtter nå spesifisering av returdata ved å bruke "OUT"-parametere.
  • Lagt til date_bin-funksjon for å runde tidsstempelverdier i henhold til et spesifisert intervall. SELECT date_bin('15 minutter', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020 02:11:15
  • Lagt til SEARCH- og CYCLE-uttrykk definert i SQL-standarden for å gjøre det enklere å bestille og identifisere sykluser i rekursive Common Table Expressions (CTE). MED RECURSIVE search_tree(id, link, data) AS ( VELG t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t. id = st.link ) SØKEDYBDE FØRST VED ID SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • I psql-verktøyet er autofullføringen av kommandoer med tabulatorer forbedret, muligheten til å vise funksjonsargumenter er lagt til kommandoen "\df", og den viste statistikken er utvidet til kommandoen "\dX".
  • Det er mulig å tildele skrivebeskyttede eller skrivebeskyttede rettigheter til brukere. Privilegier kan settes på individuelle tabeller, visninger og skjemaer ved å bruke de forhåndsdefinerte rollene pg_read_all_data og pg_write_all_data. GRANT pg_read_all_data TIL bruker1;
  • Nye installasjoner har som standard passordautentisering ved bruk av SCRAM-SHA-256 i stedet for md5 (parameteren "password_encryption" ved generering av postgresql.conf er nå satt til 'scram-sha-256').

Kilde: opennet.ru

Legg til en kommentar