Postgres Explain Cost

Postgres Explain Cost



Postgres je výkonný a široko používaný open-source relačný databázový systém so silnou reputáciou pre svoju robustnosť, funkčnosť a výkon.

Jedným z nástrojov, vďaka ktorým je Postgres prevažne silný vo výkone, je jeho príkaz EXPLAIN, ktorý poskytuje podrobnosti o pláne vykonávania dotazu SQL.

Čo je príkaz EXPLAIN?

Príkaz EXPLAIN zobrazí plán vykonávania, ktorý generuje plánovač PostgreSQL pre daný príkaz SQL.







To zahŕňa informácie o odhadovaných nákladoch na vykonanie každého kroku dotazu. Preskúmaním týchto nákladov môžeme pochopiť, prečo dopyt beží pomaly a ako ho optimalizovať.



Náklady na vysvetlenie PostgreSQL

Na získanie informácií o danom dotaze používame hlavne príkaz EXPLAIN. Príkaz vypíše nejaké informácie o dotaze.



Vezmite si napríklad dotaz, ktorý je zobrazený v nasledujúcom texte:





SELECT titul, meno
Z filmu f
PRIPOJTE SA k filmovej_kategórii fc ON f.film_id = fc.film_id
JOIN category c ON fc.category_id = c.category_id;

Ak spustíme príkaz vysvetlenia pri predchádzajúcom jednoduchom spojení:

EXPLAIN SELECT titul, c.name
Z filmu f
PRIPOJTE SA k filmovej_kategórii fc ON f.film_id = fc.film_id
JOIN category c ON fc.category_id = c.category_id;

Mali by sme dostať výstup, ako je znázornené v nasledujúcom:



Môžete si všimnúť, že pre každý krok dotazu PostgreSQL vráti odhadovanú cenu tohto dotazu.

  1. startup_cost – Zobrazuje odhadované náklady na inicializáciu operácie predtým, ako môže začať s výstupom riadkov.
  2. total_cost – celkové náklady na získanie všetkých riadkov.
  3. Riadky – určuje odhadovaný počet riadkov, ktoré sú vrátené dotazom.
  4. Šírka – určuje priemerný počet bajtov všetkých riadkov, ktoré operácia vráti.

Náklady na dopyt v PostgreSQL sú uvádzané v ľubovoľných jednotkách, ktoré sú určené parametrami nákladov, ktoré sú nastavené v konfigurácii servera.

Kľúčom týchto parametrov je seq_page_cost, ktorý nastavuje cenu načítania stránky z disku, ktorá nie je vo vyrovnávacej pamäti.

Ak používate pgAdmin, môžete použiť funkciu „explain analysis“ na získanie čitateľnejšieho a lepšie prezentovaného diagramu pre príkaz vysvetlenia. Napríklad:

Potom môžete kliknúť na každý krok a zobraziť štatistiky a odhadované náklady.

Optimalizácia dopytov na základe nákladov

Pri optimalizácii vašich dopytov je dôležité pochopiť, že nižšie náklady zvyčajne znamenajú rýchlejšie vykonanie. Preto môžete upraviť svoje dopyty za nižšiu cenu.
Tu je niekoľko faktorov, ktoré treba zvážiť:

Použite indexy tabuliek – Indexy výrazne znižujú náklady na dopyty založené na vyhľadávaní udržiavaním štruktúry údajov, ktorá umožňuje rýchlejšie vyhľadávanie.

Používajte funkcie a operátory rozumne – Odhad nákladov na funkcie a operátorov nie je vždy presný, pretože skutočné náklady môžu vo veľkej miere závisieť od konkrétnych údajov. Preto obmedzte používanie funkcií a zložitých operátorov na minimum.

Záver

Skúmali sme koncept nákladov v príkaze PostgreSQL ANALYZE. Diskutovali sme o tom, čo znamená výstup príkazu a ako použiť výstup nákladov na analýzu najefektívnejšieho spôsobu spustenia daného dotazu.