Postgres Explain Cost

Postgres Explain Cost



Postgres je výkonný a široce používaný open-source relační databázový systém se silnou reputací pro svou robustnost, funkčnost a výkon.

Jedním z nástrojů, díky kterému je Postgres převážně silný ve výkonu, je jeho příkaz EXPLAIN, který poskytuje podrobnosti o plánu provádění SQL dotazu.

Co je příkaz EXPLAIN?

Příkaz EXPLAIN zobrazí plán provádění, který plánovač PostgreSQL vygeneruje pro daný příkaz SQL.







To zahrnuje informace o odhadovaných nákladech na provedení každého kroku dotazu. Zkoumáním těchto nákladů můžeme pochopit, proč dotaz běží pomalu a jak jej optimalizovat.



PostgreSQL Explain Cost

K získání informací o daném dotazu používáme především příkaz EXPLAIN. Příkaz vypíše nějaké informace o dotazu.



Vezměte si například dotaz, který je zobrazen v následujícím textu:





VYBERTE titul, jméno
Z filmu f
PŘIPOJTE SE k filmové_kategorii fc ON f.film_id = fc.film_id
JOIN kategorie c ON fc.category_id = c.category_id;

Pokud spustíme příkaz vysvětlení na předchozím jednoduchém spojení:

EXPLAIN SELECT titul, c.name
Z filmu f
PŘIPOJTE SE k filmové_kategorii fc ON f.film_id = fc.film_id
JOIN kategorie c ON fc.category_id = c.category_id;

Měli bychom získat výstup, jak je znázorněno v následujícím:



Můžete si všimnout, že pro každý krok dotazu PostgreSQL vrací odhadovanou cenu tohoto dotazu.

  1. startup_cost – Zobrazuje odhadované náklady na inicializaci operace, než může začít vydávat řádky.
  2. total_cost – celkové náklady na načtení všech řádků.
  3. Řádky – Určuje odhadovaný počet řádků, které jsou vráceny dotazem.
  4. Šířka – Určuje průměrný počet bajtů všech řádků, které operace vrátí.

Náklady na dotaz v PostgreSQL jsou udávány v libovolných jednotkách, které jsou určeny nákladovými parametry, které jsou nastaveny v konfiguraci serveru.

Klíčem těchto parametrů je seq_page_cost, který nastavuje cenu načtení stránky z disku, která není v mezipaměti.

Pokud používáte pgAdmin, můžete použít funkci „explain analysis“ k získání čitelnějšího a dobře prezentovaného diagramu pro příkaz vysvětlení. Například:

Poté můžete kliknutím na každý krok zobrazit statistiky a odhadované náklady.

Optimalizace dotazů na základě nákladů

Při optimalizaci vašich dotazů je nezbytné pochopit, že nižší náklady obvykle znamenají rychlejší realizaci. Proto můžete upravit své dotazy za nižší cenu.
Zde je několik faktorů, které je třeba zvážit:

Použijte tabulkové indexy – Indexy výrazně snižují náklady na dotazy založené na vyhledávání tím, že udržují datovou strukturu, která umožňuje rychlejší vyhledávání.

Používejte funkce a operátory moudře – Odhad nákladů na funkce a operátory není vždy přesný, protože skutečné náklady mohou silně záviset na konkrétních datech. Omezte proto používání funkcí a složitých operátorů na minimum.

Závěr

Prozkoumali jsme koncept nákladů v příkazu PostgreSQL ANALYZE. Diskutovali jsme, co znamená výstup příkazu a jak použít výstup nákladů k analýze nejúčinnějšího způsobu spuštění daného dotazu.