sql >> Database teknologi >  >> RDS >> PostgreSQL

Nye og udviklende PostgreSQL Enterprise-funktioner med seneste udgivelser

PostgreSQL introducerede også mange andre banebrydende funktioner i version 10 til 11, 12 og 13, der gør det til en reel konkurrent mod Oracle, såsom partitioneringsforbedringer, parallel forespørgsel og logisk replikering. I dette blogindlæg vil vi fremvise nogle af de nye og bemærkelsesværdige PostgreSQL-funktioner, der er inkluderet i nyere versioner af PostgreSQL.

Partitioneringsfunktioner

Deklarativ partitionering

Indtil PostgreSQL version 9.4 var der ingen egentlig partitionering i PostgreSQL. Det blev kun opnået gennem tabelarv, som tilbød meget begrænset funktionalitet og ydeevnefordele. Meget af funktionaliteten styres manuelt gennem triggere eller SQL-kommandoer. For eksempel skulle vi bruge triggere til at dirigere en række før INSERT til den korrekte partition. Vi skal oprette indekser for hver partition separat. PostgreSQL version 10 fødte deklarativ partitionering, men vi skulle stadig oprette begrænsninger og indekser for hver partition.

PostgreSQL 11 leveres komplet med et meget imponerende sæt af nye partitioneringsfunktioner, der både hjælper med at forbedre ydeevnen og også hjælpe med at gøre partitionerede tabeller mere gennemsigtige for applikationer.

Logisk replikering af partitionerede tabeller

Med PostgreSQL 13 introducerede de støtte til logisk replikation af partitionerede tabeller. Tidligere var du tvunget til at replikere partitioner til dine standbys individuelt. Nu kan du dog automatisk replikere alle dine partitioner på samme tid

Partitioneringsmetoder

De aktuelt understøttede partitioneringsmetoder er range, list og hash.

Nøgler og indekser

Fuld understøttelse af fremmednøgler på partitionerede tabeller blev tilføjet i PostgreSQL 12. PostgreSQL kan også prale af understøttelse af primære nøgler, indekser og udløsere på partitionerede tabeller.

Standardpartition

PostgreSQL tillader oprettelsen af ​​en "standard" partition til lagring af data, der ikke matcher nogen af ​​de resterende partitioner. Oracle-brugere vil elske denne funktion, da den ikke er tilgængelig i Oracle-databasen.

Rækkebevægelse

OPDATERING sætninger, der ændrer en partitionsnøglekolonne, får nu berørte rækker til at blive flyttet til de relevante partitioner.

Partitionsbeskæring

Forbedre SELECT-ydeevnen gennem forbedrede partitionelimineringsstrategier under planlægning og udførelse af forespørgsler. En ny metode til at udføre partitionseliminering er blevet tilføjet. Denne nye algoritme er i stand til at bestemme matchende partitioner ved at se på forespørgslens WHERE-klausul. Den tidligere algoritme kontrollerede hver partition på sin side for at se, om den kunne matche WHERE-sætningen i forespørgslen. Dette resulterede i en yderligere stigning i planlægningstiden, efterhånden som antallet af skillevægge voksede.

Partitionsbeskæring under udførelse af forespørgsel

Med hensyn til forberedte sætninger er forespørgselsparametre ikke kendt før udførelsen. Query Planner kan ikke fjerne partitioner under planlægningsfasen, da parametre ikke kendes. Så udføreren udfører partitionsbeskæringen under udførelsen for kun at få adgang til de partitioner, der matcher parametre.

Nye og udviklende PostgreSQL Enterprise-funktioner med seneste udgivelserKlik for at tweete

Indekseringsfunktioner

Dækkende indeks

PostgreSQL giver dig nu mulighed for at tilføje ikke-nøglekolonner i btree-indekset. Da forespørgsler typisk skal hente flere kolonner end blot dem, de søger på, giver PostgreSQL dig mulighed for at oprette et indeks, hvor nogle kolonner blot er "nyttelast" og ikke er en del af søgenøglen. Det hjælper med kun at lave indeks-scanninger for at hente de nødvendige rækker.

Indeksér igen samtidigt

Starter PostgreSQL 12, er det muligt at genopbygge et indeks med REINDEX SAMMELIGT uden at låse tabellen for læsning/skrivning, ligesom Oracle REBUILD INDEX-kommandoen.

Parallel indeksoprettelse

Med parallel indeksoprettelse (introduceret i PostgreSQL 11, som i øjeblikket kun gælder for b-tree-indekser), kan indekser oprettes hurtigere op til max_parallel_workers-værdi og indstille maintenance_work_mem store nok til at indeholde flere kopier af data. Parallel indeksoprettelse kan reducere din indeksoprettelsestid betydeligt.

Deduplikering af data i B-Tree-indekser

Nogle gange vil der være dublerede poster i et indeks. Det betyder, at en bladnode i et B-Tree indeks med mindst to indeksposter i samme indeks indeholder de samme data for alle indekskolonnerne. Med tilføjelsen af ​​deduplikering i PostgreSQL 13 kan du gruppere disse duplikerede B-Tree indeksposter og samle dem i en gruppepost. Fordelen ved dette er at spare plads og reducere belastningen på disk og RAM, da du ikke behøver at duplikere kolonnedata. Duplikerede poster forårsager også uønsket indeksoppustethed.

Godkendelse

SCRAM-SHA-256

I PostgreSQL 11 kom understøttelse af SCRAM-SHA-256 adgangskodegodkendelse. Denne metode forhindrer adgangskodesniffing på forbindelser, der ikke er tillid til, og giver dig mulighed for at gemme dine adgangskoder i en kryptografisk hashed form.

Ud af alle de aktuelt understøttede adgangskodegodkendelsesmetoder er dette den mest sikre.

GSSAPI

GSSAPI tillader sikker godkendelse samt automatisk single-sign-on for systemer, der understøtter det. Denne godkendelsesmetode er afhængig af et GSSAPI-kompatibelt sikkerhedsbibliotek. De data, der sendes over databaseforbindelsen, vil være ukrypteret, medmindre der bruges SSL; dog er selve godkendelsen sikker. GSSAPI med Kerberos-godkendelse er muligt med PostgreSQL i henhold til industristandarder. Når Kerberos bruges, bruges en standardprincipal i formatet "tjenestenavn/værtsnavn@realm". Enhver principal, der er inkluderet i den keytab, der bruges af serveren, vil blive accepteret af PostgreSQL-serveren.

LDAP

Denne godkendelsesmetode fungerer på samme måde som adgangskodegodkendelse og bruger LDAP som bekræftelsesmetode. Det bruges kun til at validere brugernavn og adgangskodepar, derfor skal brugeren allerede eksistere i databasen for at godkendelsen skal fungere. LDAP-godkendelse fungerer i enten en simpel bindingstilstand eller det, der kaldes search+bind. Search+bind giver dig mulighed for at bruge andre identifikatorer sammenlignet med den simple bind-tilstand, som kun tillader det enestående navn, domænenavn eller e-mail at blive brugt.

Certifikat

Certifikatgodkendelsesmetoden bruger SSL-certifikater til at godkende. Derfor er den kun tilgængelig for SSL-forbindelser. Med certifikatgodkendelse kræves ingen adgangskode. Klienten skal blot levere et gyldigt og pålideligt certifikat for at kunne godkende. Certifikatets almindelige navn vil blive matchet med databasebrugernavnet, og hvis der findes et match, vil klienten blive logget ind.

Andre bemærkelsesværdige funktioner

Parallel vakuum

Med udgivelsen af ​​PostgreSQL 13 blev der implementeret forbedringer til VACUUM-kommandoen. Den pågældende forbedring er den tilføjede parameterindstilling PARALLEL. Med PARALLEL kan du udføre indeksvakuum og indeksoprydningsfaser af VACUUM. Dette giver dig mulighed for at parallelstøvsuge flere indekser svarende til en enkelt tabel.

Parallel forespørgsel

De fleste rapportforespørgsler, som generelt scanner mange data, lider af ydeevneforringelse på grund af behovet for at scanne eller samle data fra mange rækker, selv med en indeksscanning. Disse forespørgsler kan kun bruge én CPU indtil 9.4 og køre serielt.

Med parallel forespørgsel (som tilbyder parallel sekventiel scanning, merge join, hash join, aggregering og andre parallelle forespørgselsplanfunktioner) kan disse forespørgsler drage fordel af flere arbejdere, og ydeevne kan forbedres fra 2x til 10x ifølge dokumentationen.

Tjek dette indlæg for at lære, hvornår du skal bruge parallelle forespørgsler.

Native logisk replikering

PostgreSQL introducerede native logisk replikering i version 10 for at give en mere fleksibel replikeringsmulighed, i modsætning til streaming replikering og mere som Oracle Streams, for at replikere specifikke tabeller, kolonner eller rækker. Dette kan bruges til at opdele mellem flere databaser eller konsolidere fra flere databaser. Og kan også replikere mellem forskellige større versioner af PostgreSQL.

Lagrede procedurer med indlejrede transaktioner

Endnu en tilføjelse, der gør PostgreSQL kompatibel til migreringer fra Oracle-databasen.

Vi har ingen transaktionskontrol inde i pgsql-programmet (DO-blok eller funktion) i version 9.4, og vi er nødt til at bruge en løsning som dblink for at starte og udføre/rulle tilbage transaktioner .

Med lagrede procedurer, som havde premiere i version 11, kan vi nu implementere transaktionskontrol inden for enhver pgsql-struktur som while loop, for loop eller if else-sætning. Selvom lagrede procedurer ligner funktioner, skal de aktiveres af CALL-kommando og kan fungere som uafhængige programmer.

Genererede kolonner

Ligesom Oracle-databasen kan genererede kolonner i PostgreSQL gemme data, der automatisk beregnes fra andre kolonner i rækken. Dette fremskynder forespørgsler ved ikke at skulle beregne værdien under udførelse af forespørgsel, og i stedet beregnes den genererede kolonneværdi på INSERT eller OPDATERING til rækken.

JIT-kompilering

PostgreSQL 11, 12 og 13 understøtter alle Just-in-Time (JIT) kompilering, som blev tilføjet tilbage i 2018. JIT kompilering er processen med at omdanne en fortolket programevaluering til et indfødt program. Med JIT-kompilering kan denne proces udføres på køretid. En fordel ved JIT er muligheden for at generere udtryksspecifikke funktioner, som CPU'en kan udføre naturligt. Til gengæld giver processen dig en fremskyndelse.

Sidekontrolsummer

Sidekontrolsum er en funktion, der hjælper dig med at verificere integriteten af ​​data, der er gemt på disken. Tidligere kunne du kun aktivere sidekontrolsummer under initialiseringen af ​​en PostgreSQL-klynge. PostgreSQL 12 introducerede muligheden for at aktivere eller deaktivere sidekontrolsummer i en offline-klynge via kommandoen pg_checksums.

Oversigt

Som du kan se fra denne artikel, er PostgreSQL et databasesystem i konstant udvikling, der bringer mange kraftfulde funktioner til bordet. Hver ny version tilføjer nye spændende funktioner, der gør den til en reel konkurrent til andre databaser såsom Oracle. Dens partitionerings- og indekseringsfunktioner får mange nye opdateringer, der tilføjer dens allerede omfattende værktøjskasse.

Hvis du leder efter en administreret løsning til din PostgreSQL-database, er du velkommen til at tjekke vores ScaleGrid for PostgreSQL-tjeneste. Vi tilbyder en gratis 30-dages prøveperiode, der giver dig mulighed for at bruge alle vores administrationsfunktioner uden begrænsninger. Prisen starter ved kun $10/måned og giver dig adgang til en fuldt administreret PostgreSQL-hostingløsning i virksomhedskvalitet med 24/7 support.


  1. Rails 4 LIKE-forespørgsel - ActiveRecord tilføjer citater

  2. Sådan installeres SQL Server på Ubuntu 18.04

  3. Retter et ødelagt TOAST-bord

  4. Find overtrædelser af fremmednøgler i SQLite