sql >> Database >  >> RDS >> PostgreSQL

Beste nieuwe functies in PostgreSQL 14

Volgens StackOverflow is PostgreSQL de meest populaire open-source database, met steeds meer ontwikkelaars en beheerders die ermee willen werken. PostgreSQL 14, de nieuwste versie die in september 2021 is uitgebracht, heeft meer dan 200 verbeteringen en nieuwe functies, die grofweg in drie gebieden vallen:beveiliging, prestaties en bewaking.

Vanaf versie 1.9.2, eerder dit jaar uitgebracht, ondersteunt ClusterControl nu de nieuwste versie van PostgreSQL 14.

In dit bericht zullen we kijken naar de meest opvallende functies, belangrijke updates en verbeteringen die beschikbaar zijn in PostgreSQL 14.

Beveiliging

De belangrijkste beveiligingswijziging van PostgreSQL 14 is de overstap naar SCRAM als standaardverificatie nadat SCRAM-SHA-256-verificatie voor het eerst werd geïntroduceerd in PostgreSQL 10.  SCRAM biedt een veel eenvoudigere en krachtigere oplossing om de naleving van gegevens te reguleren beveiliging. De vorige standaard MD5-authenticatie heeft in het verleden enkele misbruikte zwakheden gehad.

Naast verbeterde authenticatie, vereenvoudigt PostgreSQL 14 het proces van het toewijzen van alleen-schrijven en alleen-lezen-mogelijkheden aan gebruikers in tabellen, views en schema's door twee vooraf gedefinieerde rollen te introduceren, pg_write_all_data en pg_read_all_data. De eerste rol maakt het gemakkelijk om privileges in super-gebruikerstijl te creëren. Ondanks dat het handig is voor activiteiten en toegang, moet dit soort account spaarzaam worden gebruikt. De laatste rol maakt het handig bij het verlenen van alleen-lezen toegang aan een gebruiker tot alle tabellen, schema's en views in de database. Deze rol heeft standaard leestoegang tot alle nieuw gemaakte tabellen.

Prestaties

Bedrijven verwerken steeds meer gegevens en de snelheid, het volume en de variëteit (de drie V's van Big Data) vertonen geen tekenen van vertraging. PostgreSQL 14 heeft een aantal zeer belangrijke wijzigingen aangebracht om op- en uit te schalen om deze workloads te ondersteunen en de prestaties te verbeteren. Dit kan het beste worden gegroepeerd in de volgende vijf gebieden:

Schaalbaarheid en prestaties

PostgreSQL 14 levert enorme prestaties op het gebied van verwijderingen en updates op tabellen met een groot aantal partities. Hierdoor kunnen verwijderingen en updates op gepartitioneerde tabellen gebruik maken van partitiesnoei tijdens uitvoeringstijd. Het belangrijkste is dat deze versie kan schalen naar meer partities dan voorheen, waardoor PostgreSQL veel grotere databases aankan dan voorheen mogelijk was.

In PostgreSQL versie 14 kunnen partities nu ook gelijktijdig worden losgekoppeld, waardoor het gemakkelijker wordt om grote tijdreeksgegevenstabellen te beheren. Dit is mogelijk dankzij de nieuwe functie date_bin(), waarmee gebruikers tijdreeksgegevens beter en gemakkelijker in datumbereiken kunnen samenvatten.

PostgreSQL 14 heeft ondersteuning toegevoegd voor LZ4-compressie voor TOAST. LZ4 maakt gebruik van de nieuwste compressietechnologie en richt zich op het verbeteren van de snelheid van decompressie en compressie van documentgegevens. LZ4 zal applicaties verbeteren met grotere XML- en JSON-documenten, en dit compressie-algoritme kan zowel op systeem- als kolomniveau worden geconfigureerd.

Gedistribueerde databases en workloads

PostgreSQL 14 biedt ook verbeteringen in het horizontaal schalen van een database door twee belangrijke verbeteringen in postgres_fdw (buitenlandse gegevenswrapper) te introduceren die van groot belang zijn voor het verbeteren van de prestaties van gedistribueerde databases. Deze wijzigingen ondersteunen het bulksgewijs invoegen van gegevens en parallelle tabelscans op vreemde tabellen (wanneer async_capable is ingesteld).

Verbindingscaching verbetert ook de prestaties doordat verbindingen voor alle transacties open kunnen staan. We kunnen ook de Libpd-pijplijnmodus noemen, die de prestaties van gedistribueerde databases verbetert door toe te staan ​​dat stromen van wijzigingen worden verzonden zonder te wachten op netwerkbevestiging bij elke opdracht.

Beheerbaarheid 

PostgreSQL 14 behandelt ook het probleem van B-tree index-bloat; indexen die regelmatig worden bijgewerkt, zwellen in de loop van de tijd op vanwege dode tuples die kunnen worden verwijderd door een vacuüm te gebruiken.

Hierdoor kan een onomkeerbare pagina-splitsing worden veroorzaakt door een invoeging of update wanneer de pagina tussen de stofzuigers door wordt opgevuld. Deze versie heeft het vacuümproces verbeterd door dode tupels tussen vacuüms te detecteren en te verwijderen (INDEX_CLEANUP-parameter ingesteld op Auto).

Een andere verbetering van het vacuümsysteem is het gretig verwijderen van verwijderde pagina's. In eerdere versies kostte het verwijderen van verwijderde pagina's twee vacuümcycli, door eerst de pagina als verwijderd te markeren en de tweede cyclus daadwerkelijk die ruimte vrij te maken.

Query- en indexprestaties afstemmen

Indexbeheer bij het afstemmen van toepassingen is een andere belangrijke verbetering in PostgreSQL 14. Met name REINDEX GELIJKTIJDIG en CREATE INDEX GELIJKTIJDIG, zorgen ervoor dat meerdere commando's tegelijk kunnen worden uitgevoerd zonder elkaar te hinderen. Meer over indexen, BRIN-indexen zijn flexibeler geworden omdat ze talloze min/max-waarden per bereik kunnen registreren, wat waardevol is voor groepen waarden in elk paginabereik. BRIN-indexen werken ook effectief met gegevens die niet goed zijn gelokaliseerd in de heap door gebruik te maken van bloeifilters.

De FREEZE-optie in het COPY-commando is verbeterd door het bijwerken van paginazichtbaarheidsbits over de prestaties van het laden van gegevens. COPY in binaire modus is nu ook sneller.

PostgreSQL 14 heeft het parallellisme van query's verfijnd door query-parallellisme toe te voegen aan REFRESH MATERIALIZED VIEW en RETURN QUERY. Deze verbeteringen zijn doorgevoerd in geneste loop-joins en parallelle sequentiële scans.

PostgreSQL 14 heeft het aantal plaatsen vergroot dat uitgebreide statistieken kunnen worden gebruikt voor expressies en het schatten van OR-clausules. In tegenstelling tot voorheen, waar statistieken alleen voor kolommen waren, is het nu toegestaan ​​voor een groep expressies. Systeemweergave pg_stats_ext_exprs rapporteert dergelijke statistieken.

Verbeterde logische replicatie 

Logische replicatie is verbeterd om het streamen van lang lopende transacties via de API of naar abonnees mogelijk te maken. In eerdere versies werden transacties groter dan logical_decoding_work_mem naar schijf geschreven totdat de transactie was voltooid voordat de transactie naar de abonnee werd gerepliceerd. Met de nieuwe verbeteringen verwerkt logische replicatie grote hoeveelheden DDL-instructies efficiënter.

Na elke opdracht schrijft logische replicatie cache-invalideringsberichten naar de WAL voor verwerking door lopende transacties te streamen. Dit proces zorgt voor aanzienlijke prestatievoordelen.

Bewaking 

Een van de grootste modewoorden van 2022 is monitoring, aangezien beheerders en ontwikkelaars meer inzicht willen in de prestaties in de loop van de tijd. PostgreSQL 14 heeft nieuwe functies geïntroduceerd om te helpen bij monitoring. De belangrijkste verandering van allemaal is de verplaatsing van het query-hashsysteem van pg_stat_statement naar de kerndatabase. Bewaking van query's is toegestaan ​​in verschillende PostgreSQL-systemen en logfuncties met behulp van een enkele ID.

Deze versie heeft ook de volgende nieuwe bewakingsparameters geïntroduceerd:

  1. Idle_session_timeout

  2. REINDEX op onderliggende indexen van een gepartitioneerde tabel

  3. Onderhoud_io_concurrency

  4. Pg_stat_progress_copy

  5. Pg_stat_wal

Upgraden naar PostgreSQL 14

Als je je huidige PostgreSQL-versie wilt upgraden naar versie 14, heb je drie hoofdopties die deze taak zullen uitvoeren:

  1. Pg_dumpall:het is een logische back-uptool waarmee u uw gegevens kunt dumpen en terugzetten in de nieuwe PostgreSQL versie. Hier heeft u een periode van uitval die zal variëren afhankelijk van uw gegevensomvang. U moet het systeem stoppen of nieuwe gegevens in het primaire knooppunt vermijden, de pg_dumpall uitvoeren, de gegenereerde dump naar het nieuwe databaseknooppunt verplaatsen en deze herstellen. Gedurende deze tijd kunt u niet naar uw primaire PostgreSQL-database schrijven om inconsistentie van gegevens te voorkomen.

  2. Pg_upgrade:het is een PostgreSQL-tool om uw PostgreSQL-versie te upgraden. In een productieomgeving kan het gevaarlijk zijn en in dat geval raden we deze methode niet aan. Als u deze methode gebruikt, heeft u downtime, maar deze zal waarschijnlijk aanzienlijk minder zijn dan wanneer u de vorige pg_dump-methode gebruikt.

  3. Logische replicatie:sinds PostgreSQL 10 kunt u deze replicatiemethode gebruiken waarmee u voer grote versie-upgrades uit met nul (of bijna nul) uitvaltijd. Op deze manier kunt u een standby-knooppunt toevoegen in de laatste PostgreSQL-versie, en wanneer de replicatie up-to-date is, kunt u een failoverproces uitvoeren om het nieuwe PostgreSQL-knooppunt te promoten.

Voor meer gedetailleerde informatie over de nieuwe PostgreSQL 14-functies kunt u de officiële documentatie raadplegen.

Afronden

PostgreSQL 14 heeft het spel echt verbeterd voor gebruikers van deze populaire open-source database. Ontwikkelaars en beheerders hebben nu verbeterde mogelijkheden voor het verbeteren van hoge prestaties en schaalbaarheid, verbeteringen voor gedistribueerde databases, verbeterde waarneembaarheid en meer.

ClusterControl maakt upgraden naar de nieuwste technologieversies eenvoudig en stressvrij. Als u ClusterControl nog niet gebruikt, kunt u het 30 dagen gratis evalueren. Bekijk de volledige release-opmerkingen voor meer informatie over de nieuwste release van ClusterControl 1.9.2.

Blijf op de hoogte van al het laatste nieuws en best practices voor de meest populaire open-sourcedatabases door ons te volgen op Twitter en LinkedIn en door u te abonneren op onze nieuwsbrief.


  1. Hoe een langlopende databasebewerking annuleren?

  2. Unicode-tekens vervangen in PostgreSQL

  3. Op upgrade-methode wordt niet gebeld in Android sqlite

  4. Hoe maak ik een stap in mijn SQL Server Agent Job die mijn SSIS-pakket zal uitvoeren?