PostgreSQL 11: Vývoj delenia z Postgres 9.6 na Postgres 11

Pekný piatok všetkým! Do spustenia kurzu zostáva stále menej času "Relačný DBMS", takže dnes zdieľame preklad ďalšieho užitočného materiálu na túto tému.

Vo fáze vývoja PostgreSQL 11 Na zlepšenie rozdelenia tabuľky sa vykonalo niekoľko pôsobivých prác. Rozdeľovacie stoly - ide o funkciu, ktorá v PostgreSQL existovala pomerne dlho, ale takpovediac v podstate neexistovala až do verzie 10, v ktorej sa stala veľmi užitočnou funkciou. Predtým sme uviedli, že dedičnosť tabuliek je našou implementáciou rozdelenia, a to je pravda. Len tento spôsob vás nútil robiť väčšinu práce manuálne. Napríklad, ak chcete, aby sa n-tice vložili do sekcií počas INSERT, museli by ste nakonfigurovať spúšťače, aby to urobili za vás. Rozdelenie na oddiely prostredníctvom dedenia bolo veľmi pomalé a náročné na vývoj dodatočných funkcií.

V PostgreSQL 10 sme videli zrod „deklaratívneho delenia“, funkcie navrhnutej na riešenie mnohých problémov, ktoré boli neriešiteľné pomocou starej metódy dedenia. To viedlo k oveľa výkonnejšiemu nástroju, ktorý nám umožnil rozdeliť dáta horizontálne!

Porovnanie funkcií

PostgreSQL 11 predstavuje pôsobivú sadu nových funkcií, ktoré pomáhajú zlepšiť výkon a robia rozdelené tabuľky prehľadnejšími pre aplikácie.

PostgreSQL 11: Vývoj delenia z Postgres 9.6 na Postgres 11
PostgreSQL 11: Vývoj delenia z Postgres 9.6 na Postgres 11
PostgreSQL 11: Vývoj delenia z Postgres 9.6 na Postgres 11
1. Používanie obmedzujúcich výnimiek
2. Pridáva iba uzly
3. Len pre rozdelenú tabuľku, ktorá odkazuje na nerozdelenú tabuľku
4. Indexy musia obsahovať všetky kľúčové stĺpce oddielu
5. Obmedzenia sekcií na oboch stranách sa musia zhodovať

produktivita

Máme tu aj dobré správy! Pridaná nová metóda mazanie sekcií. Tento nový algoritmus dokáže určiť vhodné sekcie pri pohľade na podmienku dotazu WHERE. Predchádzajúci algoritmus zase skontroloval každú sekciu, aby zistil, či môže spĺňať podmienku WHERE. To viedlo k ďalšiemu predĺženiu plánovacieho času, pretože počet úsekov sa zvýšil.

V 9.6, s delením pomocou dedičnosti, sa smerovanie n-tic do oblastí zvyčajne vykonávalo napísaním spúšťacej funkcie, ktorá obsahovala sériu príkazov IF na vloženie n-tice do správnej oblasti. Vykonávanie týchto funkcií môže byť veľmi pomalé. S deklaratívnym delením pridaným vo verzii 10 to funguje oveľa rýchlejšie.

Pomocou rozdelenej tabuľky so 100 oblasťami môžeme vyhodnotiť výkon načítania 10 miliónov riadkov do tabuľky s 1 stĺpcom BIGINT a 5 stĺpcami INT.

PostgreSQL 11: Vývoj delenia z Postgres 9.6 na Postgres 11

Výkon dotazovania tejto tabuľky na nájdenie jedného indexovaného záznamu a vykonanie DML na manipuláciu s jedným záznamom (len s 1 procesorom):

PostgreSQL 11: Vývoj delenia z Postgres 9.6 na Postgres 11

Tu môžeme vidieť, že výkon každej operácie sa od PG 9.6 výrazne zvýšil. Žiadosti SELECT vyzerajú oveľa lepšie, najmä tie, ktoré sú schopné počas plánovania dotazov vylúčiť viacero oddielov. To znamená, že plánovač môže preskočiť veľa práce, ktorú mal urobiť predtým. Napríklad na zbytočné úseky sa už nestavajú cesty.

Záver

Rozdelenie tabuliek sa začína stávať veľmi silnou funkciou v PostgreSQL. Umožňuje vám rýchlo zobraziť údaje online a stiahnuť ich do režimu offline bez čakania na dokončenie pomalých a masívnych operácií DML.. To tiež znamená, že súvisiace údaje môžu byť uložené spoločne, čo znamená, že k údajom, ktoré potrebujete, môžete pristupovať oveľa efektívnejšie. Vylepšenia vykonané v tejto verzii by neboli možné bez vývojárov, recenzentov a tvorcov, ktorí neúnavne pracovali na všetkých týchto funkciách.
Ďakujem im všetkým! PostgreSQL 11 vyzerá fantasticky!

Tu je taký krátky, ale celkom zaujímavý článok. Podeľte sa o svoje komentáre a nezabudnite sa prihlásiť Deň otvorených dverí, v rámci ktorej bude podrobne načrtnutý program kurzu.

Zdroj: hab.com

Pridať komentár