PostgreSQL 11: partitsioonide areng Postgres 9.6 versioonist Postgres 11

Ilusat reedet kõigile! Kursuse alguseni jääb järjest vähem aega "Relatiivne DBMS", seega jagame täna veel ühe selleteemalise kasuliku materjali tõlget.

Arengu etapis PostgreSQL 11 Tabeli partitsiooni parandamiseks on tehtud muljetavaldavat tööd. Jaotuslauad - see on funktsioon, mis eksisteeris PostgreSQL-is üsna pikka aega, kuid seda nii-öelda sisuliselt ei eksisteerinud kuni versioonini 10, kus sellest sai väga kasulik funktsioon. Varem märkisime, et tabeli pärimine on meie partitsioonide rakendamine, ja see on tõsi. Ainult see meetod sundis suurema osa tööst käsitsi tegema. Näiteks kui soovite, et INSERTide ajal sektsioonidesse sisestataks kortereid, peate selle teie eest tegema käivitajad. Pärimise kaudu jaotamine oli väga aeglane ja sellele oli raske täiendavaid funktsioone arendada.

PostgreSQL 10-s nägime "deklaratiivse partitsiooni" sündi, mis on mõeldud paljude probleemide lahendamiseks, mida vana pärimismeetodi abil ei saanud lahendada. See tõi kaasa palju võimsama tööriista, mis võimaldas andmeid horisontaalselt jagada!

Funktsioonide võrdlus

PostgreSQL 11 tutvustab muljetavaldavat komplekti uusi funktsioone, mis aitavad parandada jõudlust ja muudavad partitsioonidega tabelid rakenduste jaoks läbipaistvamaks.

PostgreSQL 11: partitsioonide areng Postgres 9.6 versioonist Postgres 11
PostgreSQL 11: partitsioonide areng Postgres 9.6 versioonist Postgres 11
PostgreSQL 11: partitsioonide areng Postgres 9.6 versioonist Postgres 11
1. Piiravate erandite kasutamine
2. Lisab ainult sõlmed
3. Ainult partitsioonitud tabeli jaoks, mis viitab partitsioonita tabelile
4. Indeksid peavad sisaldama kõiki partitsiooni võtmeveerge
5. Lõikepiirangud mõlemal küljel peavad ühtima

Производительность

Meil on ka siin häid uudiseid! Lisatud uus meetod lõikude kustutamine. See uus algoritm saab määrata sobivad jaotised, vaadates päringu tingimust WHERE. Eelmine algoritm kontrollis omakorda iga sektsiooni, et teha kindlaks, kas see võib tingimusele vastata WHERE. See tõi kaasa planeerimisaja täiendava pikenemise, kuna lõikude arv suurenes.

Pärimise teel partitsiooniga 9.6-s toimus korteežide partitsioonideks marsruutimine tavaliselt triggerfunktsiooni kirjutamise teel, mis sisaldas rida IF-lauseid, et sisestada korteež õigesse partitsiooni. Nende funktsioonide täitmine võib olla väga aeglane. Versioonis 10 lisatud deklaratiivse partitsiooniga töötab see palju kiiremini.

Kasutades 100 partitsiooniga jaotatud tabelit, saame hinnata 10 miljoni rea laadimist 1 BIGINT veeru ja 5 INT veeruga tabelisse.

PostgreSQL 11: partitsioonide areng Postgres 9.6 versioonist Postgres 11

Selle tabeli päringute toimivus ühe indekseeritud kirje leidmiseks ja DML-i käivitamine ühe kirjega manipuleerimiseks (kasutades ainult ühte protsessorit):

PostgreSQL 11: partitsioonide areng Postgres 9.6 versioonist Postgres 11

Siin näeme, et iga toimingu jõudlus on alates PG 9.6-st oluliselt suurenenud. Taotlused SELECT näevad palju paremad välja, eriti need, mis suudavad päringu planeerimise ajal mitut partitsiooni välistada. See tähendab, et planeerija võib vahele jätta palju tööd, mida ta oleks pidanud varem tegema. Näiteks ei ehitata enam radu mittevajalikele lõikudele.

Järeldus

Tabeli partitsioonid on muutumas PostgreSQL-i väga võimsaks funktsiooniks. See võimaldab teil andmeid kiiresti võrgus kuvada ja võrguühenduseta muuta, ootamata aeglaste ja suurte DML-i toimingute lõpuleviimist.. See tähendab ka seda, et seotud andmeid saab koos salvestada, mis tähendab, et vajalikele andmetele pääseb juurde palju tõhusamalt. Selles versioonis tehtud täiustused poleks olnud võimalikud ilma arendajate, ülevaatajate ja volitajateta, kes on kõigi nende funktsioonide kallal väsimatult töötanud.
Aitäh neile kõigile! PostgreSQL 11 näeb fantastiline välja!

Siin on selline lühike, kuid üsna huvitav artikkel. Jagage oma kommentaare ja ärge unustage registreeruda Avatud uste päev, mille raames kirjeldatakse üksikasjalikult kursuse programmi.

Allikas: www.habr.com

Lisa kommentaar