PostgreSQL 11: Evoluția partiționării de la Postgres 9.6 la Postgres 11

O vineri minunată tuturor! Mai rămâne din ce în ce mai puțin timp înainte de lansarea cursului „SGBD relațional”, așa că astăzi împărtășim traducerea unui alt material util pe această temă.

În stadiul de dezvoltare PostgreSQL 11 S-au făcut niște lucrări impresionante pentru a îmbunătăți partiționarea tabelelor. Tabele de partiționare - aceasta este o funcție care a existat în PostgreSQL de destul de mult timp, dar, ca să spunem așa, în esență nu a existat până la versiunea 10, în care a devenit o funcție foarte utilă. Am afirmat anterior că moștenirea tabelelor este implementarea noastră a partiționării, iar acest lucru este adevărat. Doar această metodă te-a forțat să faci cea mai mare parte a muncii manual. De exemplu, dacă doriți ca tuplurile să fie inserate în secțiuni în timpul INSERT-urilor, ar trebui să configurați declanșatoarele pentru a face acest lucru pentru dvs. Partiționarea prin moștenire a fost foarte lentă și dificil de dezvoltat funcționalități suplimentare.

În PostgreSQL 10, am văzut nașterea „partiționării declarative”, o caracteristică concepută pentru a rezolva multe probleme care nu erau rezolvabile folosind vechea metodă de moștenire. Acest lucru a condus la un instrument mult mai puternic care ne-a permis să împărțim datele pe orizontală!

Comparație de caracteristici

PostgreSQL 11 introduce un set impresionant de caracteristici noi care ajută la îmbunătățirea performanței și lasă tabelele partiționate mai transparente pentru aplicații.

PostgreSQL 11: Evoluția partiționării de la Postgres 9.6 la Postgres 11
PostgreSQL 11: Evoluția partiționării de la Postgres 9.6 la Postgres 11
PostgreSQL 11: Evoluția partiționării de la Postgres 9.6 la Postgres 11
1. Utilizarea excepțiilor limitatoare
2. Adaugă numai noduri
3. Numai pentru un tabel partiționat care face referire la unul nepartiționat
4. Indecșii trebuie să conțină toate coloanele cheie ale partiției
5. Restricțiile secțiunilor de ambele părți trebuie să se potrivească

productivitate

Avem și aici vești bune! A fost adăugată o nouă metodă ștergerea secțiunilor. Acest nou algoritm poate determina secțiuni adecvate analizând condiția de interogare WHERE. Algoritmul anterior, la rândul său, a verificat fiecare secțiune pentru a determina dacă ar putea îndeplini condiția WHERE. Acest lucru a dus la o creștere suplimentară a timpului de planificare pe măsură ce numărul de secțiuni a crescut.

În 9.6, cu partiționarea prin moștenire, rutarea tuplurilor în partiții se făcea de obicei prin scrierea unei funcții de declanșare care conținea o serie de instrucțiuni IF pentru a insera tuplu în partiția corectă. Aceste funcții ar putea fi foarte lente de executat. Cu partiționarea declarativă adăugată în versiunea 10, aceasta funcționează mult mai rapid.

Folosind un tabel partiționat cu 100 de partiții, putem evalua performanța încărcării a 10 milioane de rânduri într-un tabel cu 1 coloană BIGINT și 5 coloane INT.

PostgreSQL 11: Evoluția partiționării de la Postgres 9.6 la Postgres 11

Performanța interogării acestui tabel pentru a găsi o înregistrare indexată și a executa DML pentru a manipula o înregistrare (folosind doar 1 procesor):

PostgreSQL 11: Evoluția partiționării de la Postgres 9.6 la Postgres 11

Aici putem observa că performanța fiecărei operațiuni a crescut semnificativ de la PG 9.6. Cereri SELECT arată mult mai bine, în special cele care sunt capabile să excludă mai multe partiții în timpul planificării interogărilor. Aceasta înseamnă că programatorul poate sări peste o mulțime de lucrări pe care ar fi trebuit să le facă înainte. De exemplu, căile nu mai sunt construite pentru secțiuni inutile.

Concluzie

Partiționarea tabelelor începe să devină o caracteristică foarte puternică în PostgreSQL. Vă permite să afișați rapid datele online și să le luați offline fără a aștepta finalizarea operațiunilor DML lente și masive.. Aceasta înseamnă, de asemenea, că datele aferente pot fi stocate împreună, ceea ce înseamnă că datele de care aveți nevoie pot fi accesate mult mai eficient. Îmbunătățirile aduse în această versiune nu ar fi fost posibile fără dezvoltatorii, recenzenții și comisitorii care au lucrat neobosit la toate aceste caracteristici.
Mulțumesc tuturor! PostgreSQL 11 arată fantastic!

Iată un articol atât de scurt, dar destul de interesant. Împărtășiți-vă comentariile și nu uitați să vă înscrieți Zi deschisa, în cadrul căruia va fi conturat în detaliu programul cursului.

Sursa: www.habr.com

Adauga un comentariu