PostgreSQL 11: Udvikling af partitionering fra Postgres 9.6 til Postgres 11

Hav en god fredag ​​alle sammen! Der er mindre og mindre tid tilbage, før kurset starter "Relationel DBMS", så i dag deler vi oversættelsen af ​​et andet nyttigt materiale om emnet.

På udviklingsstadiet PostgreSQL 11 Der er blevet udført noget imponerende arbejde for at forbedre tabelopdelingen. Skilleborde - det er en funktion, der har eksisteret i PostgreSQL i ret lang tid, men den eksisterede så at sige i bund og grund først i version 10, hvor den blev en meget nyttig funktion. Vi har tidligere udtalt, at tabelarv er vores implementering af partitionering, og det er sandt. Kun denne metode tvang dig til at udføre det meste af arbejdet manuelt. For eksempel, hvis du ønskede, at tupler skulle indsættes i sektioner under INSERTs, skulle du konfigurere triggere til at gøre dette for dig. Opdeling gennem arv var meget langsom og vanskelig at udvikle yderligere funktionalitet oveni.

I PostgreSQL 10 så vi fødslen af ​​"deklarativ partitionering", en funktion designet til at løse mange problemer, der var uløselige ved hjælp af den gamle arvemetode. Dette førte til et meget mere kraftfuldt værktøj, der gjorde det muligt for os at opdele data vandret!

Funktionssammenligning

PostgreSQL 11 introducerer et imponerende sæt af nye funktioner, der hjælper med at forbedre ydeevnen og gøre opdelte tabeller mere gennemsigtige for applikationer.

PostgreSQL 11: Udvikling af partitionering fra Postgres 9.6 til Postgres 11
PostgreSQL 11: Udvikling af partitionering fra Postgres 9.6 til Postgres 11
PostgreSQL 11: Udvikling af partitionering fra Postgres 9.6 til Postgres 11
1. Brug af begrænsende undtagelser
2. Tilføjer kun noder
3. Kun for en opdelt tabel, der refererer til en ikke-opdelt tabel
4. Indekser skal indeholde alle nøglekolonner i partitionen
5. Sektionsbegrænsninger på begge sider skal matche

Ydelse

Vi har også gode nyheder her! Ny metode tilføjet sletning af afsnit. Denne nye algoritme kan bestemme passende sektioner ved at se på forespørgselsbetingelsen WHERE. Den tidligere algoritme kontrollerede til gengæld hver sektion for at afgøre, om den kunne opfylde betingelsen WHERE. Dette resulterede i en yderligere stigning i planlægningstiden, da antallet af strækninger steg.

I 9.6, med partitionering via arv, blev routing af tuples til partitioner typisk udført ved at skrive en triggerfunktion, der indeholdt en række IF-sætninger for at indsætte tuplet i den korrekte partition. Disse funktioner kan være meget langsomme at udføre. Med deklarativ partitionering tilføjet i version 10, fungerer dette meget hurtigere.

Ved at bruge en opdelt tabel med 100 partitioner kan vi evaluere ydeevnen ved at indlæse 10 millioner rækker i en tabel med 1 BIGINT-kolonne og 5 INT-kolonner.

PostgreSQL 11: Udvikling af partitionering fra Postgres 9.6 til Postgres 11

Ydeevne ved at forespørge denne tabel for at finde én indekseret post og eksekvere DML for at manipulere én post (kun ved brug af 1 processor):

PostgreSQL 11: Udvikling af partitionering fra Postgres 9.6 til Postgres 11

Her kan vi se, at ydeevnen for hver operation er steget markant siden PG 9.6. Forespørgsler SELECT ser meget bedre ud, især dem der er i stand til at udelukke flere partitioner under forespørgselsplanlægning. Det betyder, at planlæggeren kan springe meget arbejde over, som den skulle have udført før. Eksempelvis bygges der ikke længere stier til unødvendige strækninger.

Konklusion

Tabelpartitionering begynder at blive en meget kraftfuld funktion i PostgreSQL. Det giver dig mulighed for hurtigt at bringe data online og tage dem offline uden at vente på, at langsomme, massive DML-operationer er færdige.. Dette betyder også, at relaterede data kan gemmes sammen, hvilket betyder, at de data, du har brug for, kan tilgås meget mere effektivt. Forbedringerne i denne version ville ikke have været mulige uden udviklerne, anmelderne og committerne, der arbejdede utrætteligt på alle disse funktioner.
Tak til dem alle! PostgreSQL 11 ser fantastisk ud!

Her er sådan en kort, men ret interessant artikel. Del dine kommentarer og glem ikke at tilmelde dig Åben dag, inden for hvilket kursusprogrammet vil blive skitseret i detaljer.

Kilde: www.habr.com

Tilføj en kommentar