Podľa môjho názoru, na rozdiel od predchádzajúcich vydaní, PostgreSQL 12 neobsahuje jednu alebo dve revolučné funkcie (ako rozdelenie alebo paralelizmus dotazov). Raz som žartoval, že hlavnou vlastnosťou PostgreSQL 12 je väčšia stabilita. Nie je to to, čo potrebujete pri správe kritických údajov vašej firmy?
Ale PostgreSQL 12 nekončí: s novými funkciami a vylepšeniami budú aplikácie fungovať lepšie, a všetko, čo musíte urobiť, je inovovať!
(No, možno prestavte indexy, ale v tomto vydaní to nie je také strašidelné, ako sme zvyknutí.)
Bude skvelé upgradovať PostgreSQL a okamžite si užívať výrazné vylepšenia bez zbytočného rozruchu. Pred pár rokmi som si prezrel upgrade z PostgreSQL 9.4 na PostgreSQL 10 a videl som, ako sa aplikácia zrýchlila vďaka vylepšenému paralelizmu dotazov v PostgreSQL 10. A hlavne sa odo mňa takmer nič nevyžadovalo (stačí nastaviť konfiguračný parameter max_parallel_workers
).
Súhlasíte, je to výhodné, keď aplikácie fungujú lepšie ihneď po inovácii. A veľmi sa snažíme vyhovieť používateľom, pretože PostgreSQL ich má stále viac.
Ako vás teda môže uspokojiť jednoduchý upgrade na PostgreSQL 12? teraz ti to poviem.
Hlavné vylepšenia indexovania
Bez indexovania databáza ďaleko nezájde. Ako inak môžete rýchlo nájsť informácie? Základný indexovací systém PostgreSQL je tzv
Jednoducho používame operátora CREATE INDEX ON some_table (some_column)
a PostgreSQL robí veľa práce, aby bol index aktuálny, zatiaľ čo neustále vkladáme, aktualizujeme a odstraňujeme hodnoty. Všetko funguje samo od seba, akoby mávnutím čarovného prútika.
Ale PostgreSQL indexy majú jeden problém – oni
PostgreSQL 12 výrazne zlepšuje výkon indexov B-stromu a experimenty s benchmarkmi, ako je TPC-C, ukázali, že sa teraz používa v priemere o 40 % menej miesta. Teraz trávime menej času nielen udržiavaním indexov B-stromu (teda operáciami zápisu), ale aj získavaním údajov, pretože indexy sú oveľa menšie.
Aplikácie, ktoré aktívne aktualizujú svoje tabuľky – zvyčajne aplikácie OLTP (
Niektoré stratégie inovácie vyžadujú prebudovanie indexov B-stromu, aby sa využili tieto výhody (napr.
Existujú ďalšie vylepšenia infraštruktúry indexovania v PostgreSQL 12. Ďalšia vec, kde bola nejaká mágia -
PostgreSQL 12 znížil réžiu záznamov WAL, ktoré vytvárajú indexy GiST, GIN a SP-GiST počas vytvárania indexu. To poskytuje niekoľko hmatateľných výhod: záznamy WAL zaberajú menej miesta na disku a údaje sa prehrávajú rýchlejšie, napríklad počas obnovy po havárii alebo obnovy v určitom čase. Ak takéto indexy používate vo svojich aplikáciách (napríklad geopriestorové aplikácie založené na PostGIS často používajú index GiST), je to ďalšia funkcia, ktorá výrazne zlepší zážitok bez akéhokoľvek úsilia z vašej strany.
Delenie - väčšie, lepšie, rýchlejšie
Bol predstavený PostgreSQL 10
V PostgreSQL 12 sa výkon deliaceho systému výrazne zlepšil, najmä ak sú v tabuľke tisíce oddielov. Ak napríklad dotaz ovplyvní iba niekoľko oddielov v tabuľke s tisíckami z nich, vykoná sa oveľa rýchlejšie. Výkon sa nezlepšuje len pre tieto typy dopytov. Tiež si všimnete, aké rýchlejšie sú operácie INSERT na tabuľkách s viacerými oddielmi.
Zaznamenávanie údajov pomocou
Vďaka týmto výhodám vám PostgreSQL umožňuje ukladať ešte väčšie súbory údajov a zjednodušiť ich načítanie. A žiadne úsilie z vašej strany. Ak má aplikácia veľa oddielov, napríklad zaznamenávanie údajov časových radov, jednoduchý upgrade výrazne zlepší jej výkon.
Aj keď to nie je presne vylepšenie „upgradujte a užívajte si“, PostgreSQL 12 vám umožňuje vytvárať cudzie kľúče, ktoré odkazujú na rozdelené tabuľky, vďaka čomu je práca s partíciou potešením.
WITH dopytov je teraz oveľa lepšie
Kedy
Často zisťujem, že začiatočníci v SQL radi používajú CTE; ak ich napíšete určitým spôsobom, naozaj to vyzerá, ako keby ste písali nevyhnutný program. Osobne sa mi páčilo prepisovať tieto otázky, aby som to obišiel bez CTE a zvýšiť produktivitu. Teraz je všetko inak.
PostgreSQL 12 vám umožňuje vložiť konkrétny typ CTE bez vedľajších účinkov (SELECT
), ktorý sa použije iba raz na konci požiadavky. Ak by som sledoval CTE dopyty, ktoré som prepísal, väčšina z nich by spadala do tejto kategórie. To pomáha vývojárom písať jasný kód, ktorý teraz tiež beží rýchlo.
PostgreSQL 12 navyše optimalizuje samotné vykonávanie SQL bez toho, aby ste museli čokoľvek robiť. A hoci teraz asi nebudem potrebovať optimalizovať takéto dotazy, je skvelé, že PostgreSQL naďalej pracuje na optimalizácii dotazov.
Just-in-Time (JIT) – teraz predvolené
Na systémoch PostgreSQL 12 s podporou
Keďže JIT je štandardne povolený v PostgreSQL 12, výkon sa zlepší sám o sebe, ale odporúčam otestovať aplikáciu v PostgreSQL 11, ktorá zaviedla JIT, aby ste zmerali výkon dotazov a zistili, či nepotrebujete niečo vyladiť.
A čo ostatné nové funkcie v PostgreSQL 12?
PostgreSQL 12 má množstvo skvelých nových funkcií, od schopnosti skúmať údaje JSON pomocou štandardných výrazov smerovania SQL/JSON až po viacfaktorovú autentifikáciu s parametrom. clientcert=verify-full
, vytvorené stĺpce a mnoho ďalšieho. Dosť na samostatný príspevok.
Rovnako ako PostgreSQL 10, PostgreSQL 12 zlepší celkový výkon ihneď po inovácii. Samozrejme, môžete mať svoju vlastnú cestu - otestujte aplikáciu za podobných podmienok na produkčnom systéme pred povolením vylepšení, ako som to urobil s PostgreSQL 10. Aj keď je PostgreSQL 12 už stabilnejší, ako som očakával, nebuďte leniví v testovaní aplikácie dôkladne pred uvedením do výroby.
Zdroj: hab.com