Sdílet prostřednictvím


Monitorování pomocí pg_stat_statements

Důležité

Automatické škálování LakeBase je v beta verzích v následujících oblastech: eastus2, westeurope, westus.

Automatické škálování LakeBase je nejnovější verze LakeBase s automatickým škálováním výpočetních prostředků, škálováním na nulu, větvení a okamžitým obnovením. Porovnání funkcí se službou Lakebase Provisioned najdete v tématu Volba mezi verzemi.

pg_stat_statements je rozšíření Postgres, které poskytuje podrobné statistické zobrazení provádění příkazů SQL v rámci databáze Lakebase Postgres. Sleduje informace, jako jsou počty spuštění, celkový a průměrný čas provádění a další, a pomáhá analyzovat a optimalizovat výkon dotazů SQL.

Kdy použít pg_stat_statements

Použijte pg_stat_statements , když potřebujete:

  • Podrobné statistiky spouštění dotazů a metriky výkonu
  • Identifikace pomalých nebo často spouštěných dotazů
  • Analýza výkonu dotazů a přehledy optimalizace
  • Analýza databázových úloh a plánování kapacity
  • Integrace s vlastními monitorovacími nástroji a řídicími panely

Povolte pg_stat_statements

Rozšíření pg_stat_statements je k dispozici v Lakebase Postgres. Chcete-li to povolit:

  1. Připojte se k databázi pomocí editoru SQL nebo klienta Postgres.

  2. Spuštěním následujícího příkazu SQL vytvořte rozšíření:

    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
    
  3. Rozšíření začne shromažďovat statistiky okamžitě po vytvoření.

Trvalost dat

Statistiky shromážděné rozšířením pg_stat_statements se ukládají do paměti a při pozastavení nebo restartování výpočetních prostředků Lakebase se nezachovají. Pokud se například vaše výpočetní prostředky z důvodu nečinnosti snižují, ztratí se všechny existující statistiky. Po restartování výpočetních prostředků se shromáždí nové statistiky.

Toto chování znamená, že:

  • Resetování statistik po restartování nebo pozastavení výpočetních prostředků
  • Dlouhotrvající analýza výkonu vyžaduje konzistentní dostupnost výpočetních prostředků.
  • Před plánovanou údržbou nebo restartováním můžete chtít exportovat důležité statistiky.

Poznámka:

Pokud potřebujete historická data o výkonu napříč událostmi výpočetního životního cyklu, zvažte pravidelné spouštění monitorovacích dotazů a ukládání výsledků externě.

Další informace: Rozšíření Postgres

Statistika provádění dotazů

Po povolení rozšíření můžete dotazy na vykonávací statistiky zadávat pomocí zobrazení pg_stat_statements. Toto zobrazení obsahuje jeden řádek na samostatný databázový dotaz, který zobrazuje různé statistiky:

SELECT * FROM pg_stat_statements LIMIT 10;

Zobrazení obsahuje podrobnosti jako:

ID uživatele dbid queryid dotaz volá
16391 16384 -9047282044438606287 SELECT * OD uživatelů; 10

Úplný seznam sloupců a popisů najdete v dokumentaci k PostgreSQL.

Klíčové dotazy monitorování

K analýze výkonu databáze použijte tyto dotazy:

Vyhledání nejpomalejších dotazů

Tento dotaz identifikuje dotazy s nejvyšší průměrnou dobou provádění, což může značit neefektivní dotazy, které potřebují optimalizaci:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    (total_exec_time / calls) AS avg_time_ms
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;

Vyhledání nejčastěji spouštěných dotazů

Nejčastěji vykonávané dotazy jsou často kritické cesty a kandidáti na optimalizaci. Tento dotaz zahrnuje poměry přístupů do mezipaměti, které pomáhají identifikovat dotazy, které můžou těžit z lepšího indexování:

SELECT
    query,
    calls,
    total_exec_time,
    rows,
    100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

Najít dotazy s nejvyšším I/O

Tento dotaz identifikuje dotazy, které provádějí většinu vstupně-výstupních operací disku, což může mít vliv na celkový výkon databáze:

SELECT
    query,
    calls,
    shared_blks_read + shared_blks_written AS total_io,
    shared_blks_read,
    shared_blks_written
FROM pg_stat_statements
ORDER BY (shared_blks_read + shared_blks_written) DESC
LIMIT 20;

Najděte nejvíce časově náročné dotazy

Tento dotaz identifikuje dotazy, které spotřebovávají největší celkovou dobu provádění ve všech spuštěních:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Najděte dotazy, které vracejí mnoho řádků

Tento dotaz identifikuje dotazy, které vracejí velké sady výsledků, které můžou těžit ze stránkování nebo filtrování:

SELECT
    query,
    calls,
    rows,
    (rows / calls) AS avg_rows_per_call
FROM pg_stat_statements
ORDER BY rows DESC
LIMIT 10;

Resetování statistik

Resetování statistik shromážděných pomocí pg_stat_statements:

Poznámka:

Ke spuštění této funkce mají oprávnění databricks_superuser pouze role. Výchozí role vytvořená s projektem Lakebase a role vytvořené v aplikaci Lakebase mají uděleno členství v roli databricks_superuser.

SELECT pg_stat_statements_reset();

Tato funkce vymaže všechna shromážděná statistická data, jako jsou časy provádění a počty příkazů SQL, a začne shromažďovat nová data. Je zvlášť užitečné, když chcete začít znovu se shromažďováním statistik výkonu.

Prostředky

Další informace: Dokumentace k PostgreSQL