Efter et års udvikling er den nye stabile version af DBMS PostgreSQL 15 blevet offentliggjort. Opdateringer til den nye version vil blive udgivet i fem år frem til november 2027.
Hovednyhederne:
- Der er tilføjet understøttelse af SQL-kommandoen «MERGE», som minder om udtrykket «INSERT … ON CONFLICT». MERGE gør det muligt at oprette betingede SQL-udtryk, der kombinerer operationer som INSERT, UPDATE og DELETE i én sætning. For eksempel kan MERGE bruges til at fusionere to tabeller ved at indsætte manglende poster og opdatere eksisterende. MERGE INTO customer_account ca USING recent_transactions t ON t.customer_id = ca.customer_id WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
- Data sorteringsalgoritmerne i hukommelsen og på disken er betydeligt forbedret. Afhængigt af datatypen observeres der i testene en stigning i sorteringshastigheden fra 25% til 400%.
- Ydeevnen for vinduesfunktioner som row_number(), rank(), dense_rank() og count() er blevet accelereret.
- Muligheden for parallelt at udføre forespørgsler med udtrykket «SELECT DISTINCT» er blevet implementeret.
- I mekanismen for tilslutning af eksterne tabeller Foreign Data Wrapper (postgres_fdw) er der tilføjet understøttelse af asynkrone commits ud over den tidligere tilføjede mulighed for asynkron behandling af forespørgsler til eksterne servere.
- Der er tilføjet muligheder for at anvende LZ4- og Zstandard (zstd) algoritmer til komprimering af WAL-logfiler for transaktioner, hvilket i visse tilfælde kan øge ydeevnen, samtidig med at diskpladsen spares. For at forkorte genoprettelsestiden efter en fejl er der tilføjet understøttelse af forudgående udtræk af sider nævnt i WAL-loggen.
- I værktøjet pg_basebackup er der tilføjet understøttelse af filkomprimering ved backup på siden server, ved hjælp af metoderne gzip, LZ4 eller zstd. Der er givet mulighed for at bruge egne moduler til arkivering, hvilket eliminerer behovet for at køre shell-kommandoer.
- Der er tilføjet en række nye funktioner til behandling af strenge ved hjælp af regulære udtryk: regexp_count(), regexp_instr(), regexp_like() og regexp_substr().
- Der er tilføjet en mulighed for at aggregere multirange-typer i funktionen range_agg().
- Der er tilføjet en security_invoker-tilstand, som gør det muligt at oprette visninger, der udføres med rettighederne fra den kalder bruger i stedet for skaberen af visningen.
- Logisk replikation understøtter nu filtrering af rækker og kolonnelister, der gør det muligt for afsenderen at vælge et datamæssigt delmængde til replikation fra tabellen. Desuden er håndteringen af konflikter blevet forenklet i den nye version, for eksempel med muligheden for at springe over konfliktfyldte transaktioner og automatisk frakoble abonnementen ved fejl. I logisk replikation er det nu tilladt at bruge to-fase commits (2PC).
- Der er tilføjet et nyt logformat - jsonlog, der gemmer information i struktureret format ved hjælp af JSON.
- Administratorer har fået mulighed for at delegere visse beføjelser til brugere til ændring af specifikke indstillinger. serverkonfiguration PostgreSQL.
- I psql-værktøjet er der tilføjet støtte til at søge information om indstillinger (pg_settings) med kommandoen "\dconfig".
- Der er sikret brugen af delt hukommelse til at opsamle statistik om serverens arbejde, hvilket har elimineret behovet for en separat proces til indsamling af statistik og periodisk nulstilling af tilstanden på disk.
- Mulighed for at bruge ICU-lokaliteter som standard "ICU Collation" er blevet tilføjet. Tidligere kunne kun libc-lokaliteter anvendes som standard.
- Et indbygget udvidelse pg_walinspect er blevet foreslået, som gør det muligt at inspicere indholdet af WAL-logfiler ved hjælp af SQL-forespørgsler.
- For public-schemat er alle brugere, bortset fra databaseejeren, blevet fratrukket beføjelserne til at udføre CREATE-kommandoen.
- I PL/Python er understøttelsen af Python 2 blevet fjernet. Den forældede eksklusive backup-tilstand er blevet afviklet.
Tillæg: Fra 19:00 til 20:00 (MSK) vil der finde sted et webinar om ændringerne i den nye version med Pavel Luzanov (Postgres Professional). For dem, der ikke kan deltage i live-udsendelsen, er der åbnet for optagelsen af Pavels juni-foredrag "PostgreSQL 15: MERGE og mere" på PGConf.Russia.
Kilde: opennet.ru
