PostgreSQL 11: Vývoj dělení z Postgres 9.6 na Postgres 11

Krásný pátek všem! Do zahájení kurzu zbývá stále méně času "Relační DBMS", takže dnes sdílíme překlad dalšího užitečného materiálu na toto téma.

Ve fázi vývoje PostgreSQL 11 Bylo provedeno několik působivých prací na zlepšení rozdělení tabulek. Rozdělovací tabulky - to je funkce, která v PostgreSQL existovala poměrně dlouho, ale takříkajíc v podstatě neexistovala až do verze 10, ve které se stala velmi užitečnou funkcí. Již dříve jsme uvedli, že dědění tabulek je naší implementací rozdělení, a to je pravda. Pouze tento způsob vás nutil dělat většinu práce ručně. Pokud byste například chtěli, aby byly n-tice vkládány do sekcí během INSERTů, museli byste nakonfigurovat spouštěče, aby to udělaly za vás. Rozdělení pomocí dědičnosti bylo velmi pomalé a bylo obtížné vyvinout další funkce navíc.

V PostgreSQL 10 jsme viděli zrod „deklarativního dělení“, což je funkce navržená k vyřešení mnoha problémů, které byly neřešitelné pomocí staré metody dědičnosti. To vedlo k mnohem výkonnějšímu nástroji, který nám umožnil horizontálně rozdělit data!

Srovnání funkcí

PostgreSQL 11 představuje působivou sadu nových funkcí, které pomáhají zlepšit výkon a činí dělené tabulky pro aplikace transparentnější.

PostgreSQL 11: Vývoj dělení z Postgres 9.6 na Postgres 11
PostgreSQL 11: Vývoj dělení z Postgres 9.6 na Postgres 11
PostgreSQL 11: Vývoj dělení z Postgres 9.6 na Postgres 11
1. Použití omezujících výjimek
2. Přidá pouze uzly
3. Pouze pro dělenou tabulku odkazující na nerozdělenou tabulku
4. Indexy musí obsahovat všechny klíčové sloupce oddílu
5. Omezení sekcí na obou stranách se musí shodovat

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

I tady máme dobré zprávy! Přidána nová metoda mazání sekcí. Tento nový algoritmus může určit vhodné sekce pohledem na podmínku dotazu WHERE. Předchozí algoritmus zase zkontroloval každou sekci, aby zjistil, zda může splnit podmínku WHERE. To vedlo k dalšímu prodloužení doby plánování, protože se zvýšil počet úseků.

V 9.6, s dělením pomocí dědičnosti, se směrování n-tic do oblastí obvykle provádělo napsáním spouštěcí funkce, která obsahovala řadu příkazů IF pro vložení n-tice do správné oblasti. Provádění těchto funkcí může být velmi pomalé. S deklarativním dělením přidaným ve verzi 10 to funguje mnohem rychleji.

Pomocí rozdělené tabulky se 100 oddíly můžeme vyhodnotit výkon načítání 10 milionů řádků do tabulky s 1 BIGINT sloupcem a 5 INT sloupci.

PostgreSQL 11: Vývoj dělení z Postgres 9.6 na Postgres 11

Výkon dotazování této tabulky za účelem nalezení jednoho indexovaného záznamu a spuštění DML pro manipulaci s jedním záznamem (používá se pouze 1 procesor):

PostgreSQL 11: Vývoj dělení z Postgres 9.6 na Postgres 11

Zde můžeme vidět, že výkon každé operace se od PG 9.6 výrazně zvýšil. Žádosti SELECT vypadají mnohem lépe, zejména ty, které jsou schopny vyloučit více oddílů během plánování dotazů. To znamená, že plánovač může přeskočit spoustu práce, kterou měl udělat dříve. Už se například nestaví cesty na zbytečné úseky.

Závěr

Rozdělení tabulek se začíná stávat velmi silnou funkcí v PostgreSQL. Umožňuje vám rychle zobrazovat data online a přenášet je do režimu offline bez čekání na dokončení pomalých a masivních operací DML.. To také znamená, že související data mohou být uložena společně, což znamená, že k datům, která potřebujete, lze přistupovat mnohem efektivněji. Vylepšení provedená v této verzi by nebyla možná bez vývojářů, recenzentů a autorů, kteří neúnavně pracovali na všech těchto funkcích.
Díky jim všem! PostgreSQL 11 vypadá fantasticky!

Tady je takový krátký, ale docela zajímavý článek. Podělte se o své komentáře a nezapomeňte se přihlásit Den otevřených dveří, v rámci kterého bude podrobně nastíněn program kurzu.

Zdroj: www.habr.com

Přidat komentář