PostgreSQL 11: Evolutionen av partitionering frÄn Postgres 9.6 till Postgres 11

Önskar alla en fin fredag! Det Ă€r mindre och mindre tid kvar till lanseringen av kursen Relational DBMS, dĂ€rför delar vi idag med oss av en översĂ€ttning av ytterligare ett anvĂ€ndbart material i Ă€mnet.

Under utvecklingen PostgreSQL 11 gjordes imponerande arbeten för att förbĂ€ttra sektioneringen av tabeller. Sektionering av tabeller — det hĂ€r Ă€r en funktion som funnits i PostgreSQL under lĂ„ng tid, men om man ska uttrycka det sĂ„, existerade den i princip inte förrĂ€n version 10, dĂ€r den blev en mycket anvĂ€ndbar funktion. Tidigare hĂ€vdade vi att arv av tabeller Ă€r vĂ„r implementering av sektionering, och det stĂ€mmer. Men den hĂ€r metoden tvingade er att göra det mesta av arbetet manuellt. Till exempel, om ni ville att tupler skulle sĂ€ttas in i sektioner under INSERT, behövde ni konfigurera triggers för att göra det för er. Sektionering med hjĂ€lp av arv var mycket lĂ„ngsam och svĂ„r att utveckla extra funktioner ovanpĂ„.

I PostgreSQL 10 sĂ„g vi födelsen av den "deklarativa sektioneringen" — en funktion avsedd att lösa mĂ„nga problem som var olösliga med den gamla metoden med arv. Detta ledde till uppkomsten av ett mycket kraftfullare verktyg som tillĂ„ter oss att dela upp data horisontellt!

JÀmförelse av funktioner

I PostgreSQL 11 introducerades en imponerande uppsÀttning nya funktioner som hjÀlper till att öka prestandan och göra sektionerade tabeller mer transparenta för applikationer.

PostgreSQL 11: Evolutionen av partitionering frÄn Postgres 9.6 till Postgres 11
PostgreSQL 11: Evolutionen av partitionering frÄn Postgres 9.6 till Postgres 11
PostgreSQL 11: Evolutionen av partitionering frÄn Postgres 9.6 till Postgres 11
1. AnvÀnder begrÀnsande undantag
2. LĂ€gger till endast noder
3. Endast för sektionerad tabell, som hÀnvisar till en icke-sektionerad
4. Index mÄste innehÄlla alla nyckelskolumner i sektionen
5. BegrÀnsningar pÄ sektionen pÄ bÄda sidor mÄste överensstÀmma

Performance

HĂ€r har vi ocksĂ„ goda nyheter! En ny metod för borttagning av sektioner. Denna nya algoritm kan identifiera lĂ€mpliga sektioner genom att granska frĂ„gans villkor DÄR. Den tidigare algoritmen, Ă„ sin sida, kontrollerade varje sektion för att avgöra om den kunde uppfylla villkoret DÄR. Detta ledde till ytterligare ökning av planeringstiden nĂ€r antalet sektioner vĂ€xte.

I version 9.6, nÀr sektionering med hjÀlp av arv anvÀndes, genomfördes ruttening av tuples i sektionen vanligtvis genom att skriva en triggerfunktion som innehöll en serie IF-satser för att infoga tuple i rÀtt sektion. Dessa funktioner kunde vara mycket lÄngsamma vid körning. Med deklarativ sektionering som lades till i version 10, började detta fungera mycket snabbare.

Genom att anvÀnda en sektionerad tabell med 100 sektioner kan vi uppskatta prestandan vid inladdning av 10 miljoner rader i tabellen frÄn 1 kolumn BIGINT och 5 kolumner INT.

PostgreSQL 11: Evolutionen av partitionering frÄn Postgres 9.6 till Postgres 11

Prestandan för att frÄga denna tabell för att hitta en indexerad post och utföra DML för att manipulera en post (anvÀnda endast 1 processor):

PostgreSQL 11: Evolutionen av partitionering frÄn Postgres 9.6 till Postgres 11

HĂ€r ser vi att prestandan för varje operation har ökat avsevĂ€rt efter PG 9.6. FörfrĂ„gningarna VÄLJ ser mycket bĂ€ttre ut, sĂ€rskilt de som kan utesluta flera sektioner under planeringen av förfrĂ„gningar. Detta innebĂ€r att planlĂ€ggaren kan hoppa över en stor del av arbetet som den tidigare var tvungen att göra. Till exempel byggs det inte lĂ€ngre vĂ€gar för onödiga sektioner.

Slutsats

Sektionering av tabeller börjar bli en mycket kraftfull funktion i PostgreSQL. Det gör det möjligt att snabbt exportera data online och konvertera dem till offline, utan att vÀnta pÄ att lÄngsamma massoperationer DML ska slutföras.. Detta innebÀr ocksÄ att relaterade data kan lagras tillsammans, vilket gör att nödvÀndiga data kan nÄs mycket effektivare. FörbÀttringarna som gjorts i denna version skulle inte ha varit möjliga utan utvecklarna, granskare och bidragsgivare som oförtröttligt arbetade med alla dessa funktioner.
Tack till dem alla! PostgreSQL 11 ser helt fantastiskt ut!

SÄ hÀr Àr en kort, men ganska intressant artikel. Dela gÀrna kommentarer och glöm inte att registrera dig för öppen hus dag, dÀr programmet för kursen kommer att redovisas i detalj.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster