Trasování a sledování aktivity

Dokončeno

Velkou část údržby databází je ladění výkonu. Stejné soubory protokolů, které jste použili ke kontrole místních databází, jsou stále dostupné ve službě Azure Database for MySQL/PostgreSQL.

Při migraci databází do Azure je potřeba pokračovat v kontrole souborů protokolu, abyste zajistili zachování výkonu databází.

V této lekci se dozvíte, kde jsou soubory protokolů pro PostgreSQL a MySQL uložené v Azure a úroveň podrobností, které obsahují.

Sledování databázové aktivity pomocí protokolů serveru

Azure Database for MySQL/PostgreSQL také zaznamenává diagnostické informace v protokolech serveru. Protokoly serveru jsou soubory protokolů nativních zpráv pro MySQL a PostgreSQL (ne soubory transakčních protokolů, které jsou nepřístupné ve službě Azure Database for MySQL/PostgreSQL). Tyto soubory obsahují zprávy, stav serveru a další informace o chybách, které používáte k ladění problémů s databázemi. Protokoly serveru se uchovávají až sedm dní (méně, pokud celková velikost souborů protokolu serveru přesahuje 7 GB).

Azure Database for MySQL a Azure Database for PostgreSQL zaznamenávají v protokolech serveru různé podrobnosti. Následující části popisují protokoly serveru pro každou službu samostatně.

Protokoly serveru ve službě Azure Database for MySQL

Protokol serveru ve službě Azure Database for MySQL poskytuje informace běžně dostupné v protokolu pomalých dotazů a protokol auditu na serveru MySQL.

Informace v protokolu pomalých dotazů slouží k identifikaci pomalých dotazů. Ve výchozím nastavení je protokol pomalých dotazů zakázaný. Povolíte ho nastavením parametru serveru slow_query_log na ZAPNUTO. Protokol pomalých dotazů nakonfigurujete tak, aby určil, co je pomalým dotazem , pomocí následujících parametrů serveru:

  • log_queries_not_using_indexes. Tento parametr je zapnutý nebo vypnutý. Nastavte ho na ZAPNUTO , aby se zaznamenávaly všechny dotazy, které budou pravděpodobně provádět úplnou kontrolu tabulky, a ne vyhledávání v indexu.
  • log_throttle_queries_not_using_indexes. Určuje maximální počet pomalých dotazů, které nepoužívají indexy, které se dají protokolovat za minutu.
  • log_slow_admin_queries. Nastavte tento parametr na ZAPNUTO , aby se do protokolu zahrnuly pomalé dotazy pro správu.
  • long_query_time. Prahová hodnota (v sekundách) pro dotaz, který se má považovat za pomalý.

Po povolení protokolu pomalých dotazů a protokolu auditu se soubory protokolů začnou zobrazovat na stránce Protokoly serveru pro server. Každý den se vytvoří nový protokol pomalých dotazů. Kliknutím na soubor protokolu ho stáhněte:

Image of the Server logs page for Azure Database for MySQL.

Pokud chcete povolit protokolování auditu, nastavte parametr serveru audit_log_enabled na HODNOTU ON. Protokolování auditu nakonfigurujete pomocí následujících parametrů:

  • audit_log_events. Zadejte události, které se mají auditovat. Tento parametr na webu Azure Portal poskytuje rozevírací seznam událostí, jako jsou CONNECTION, DDL, DML, ADMIN a další.
  • audit_log_exclude_users. Tento parametr je čárkami oddělený seznam uživatelů, jejichž aktivity nebudou zahrnuty do protokolu auditování.

Pokud potřebujete zachovat protokol pomalých dotazů a protokol auditu po dobu delší než sedm dnů, zajistíte jejich přenos do úložiště Azure. Použijte stránku Nastavení diagnostiky pro váš server a pak vyberte + Přidat nastavení diagnostiky. Na stránce Nastavení diagnostiky vyberte Archivovat do účtu úložiště, vyberte účet úložiště, do kterého chcete uložit soubory protokolu (tento účet úložiště už musí existovat), vyberte MySqlSlowLogs a MySqlAuditLogs a zadejte dobu uchovávání až 365 dnů. Soubory protokolů si můžete stáhnout z úložiště Azure v libovolném okamžiku během této doby. Vyberte Uložit:

Image of the Diagnostic settings page for Azure Database for MySQL.

Data protokolu pomalých dotazů se zapisují ve formátu JSON do objektů blob v kontejneru s názvem insights-logs-mysqlslowlogs. Zobrazení souborů protokolu v úložišti Azure může trvat až 10 minut. Záznamy auditu se ukládají do kontejneru objektů blob insights-logs-mysqlslowlogs , a to znovu ve formátu JSON.

Protokoly serveru ve službě Azure Database for PostgreSQL

Protokol serveru ve službě Azure Database for PostgreSQL obsahuje protokol chyb a soubory protokolu dotazů. Informace v těchto souborech vám pomůžou najít zdroje chyb a neefektivních dotazů.

Protokolování povolíte nastavením různých parametrů konfigurace serveru log_ na zapnuto. Mezi tyto parametry patří:

  • log_checkpoints. Kontrolní bod nastane vždy, když se každý datový soubor aktualizuje nejnovějšími informacemi z transakčního protokolu. Pokud dojde k selhání serveru, označuje tento bod čas, kdy musí obnovení začít tím, že se z transakčního protokolu posune dál.
  • log_connection a log_disconnections. Tato nastavení zaznamenávají každé úspěšné připojení a konec každé relace.
  • log_duration. Toto nastavení způsobí, že se zaznamená doba trvání každého dokončeného příkazu SQL.
  • log_lock_waits. Toto nastavení způsobí zaznamenání událostí čekání na uzamčení. Čekání na zámky můžou být způsobeny špatně implementovanými transakcemi v kódu aplikace.
  • log_statement_stats. Toto nastavení zapíše kumulativní informace o výkonu serveru do protokolu.

Azure Database for PostgreSQL také poskytuje další parametry pro vyladění zaznamenaných informací:

  • log_error_verbosity. Toto nastavení určuje úroveň podrobností zaznamenaných pro každou protokolovanou zprávu.
  • log_retention_days. Toto je počet dní, po který server uchovává každý soubor protokolu před jeho odebráním. Výchozí hodnota je tři dny a můžete ji nastavit na maximálně sedm dnů.
  • log_min_messages a log_min_error_statement. Pomocí těchto parametrů můžete určit úrovně upozornění a chyb pro příkazy záznamu.

Stejně jako u služby Azure Database for MySQL jsou soubory protokolů vygenerované službou Azure Database for PostgreSQL dostupné na stránce Protokoly serveru. Ke zkopírování protokolů do úložiště Azure můžete použít také stránku Nastavení diagnostiky.

Sledování výkonu dotazů

Úložiště dotazů je další funkce, kterou poskytuje Azure, která vám pomůže identifikovat a sledovat špatně spuštěné dotazy. Používáte ji se službou Azure Database for MySQL a Azure Database for PostgreSQL.

Povolení sledování výkonu dotazů

Úložiště dotazů zaznamenává informace ve schématu mysql ve službě Azure Database for MySQL a v databázi s názvem azure_sys ve službě Azure Database for PostgreSQL. Úložiště dotazů může zaznamenávat dva typy informací – data o provádění dotazů a informace o statistikách čekání. Úložiště dotazů je ve výchozím nastavení zakázané. Povolíte ji takto:

  • Pokud používáte Azure Database for MySQL, nastavte parametry serveru query_store_capture_mode a query_store_wait_sampling_capture_mode na ALL.
  • Pokud používáte Azure Database for PostgreSQL, nastavte parametr serveru pg_qs.query_capture_mode na ALL nebo TOP a nastavte parametr pgms_wait_sampling.query_capture_mode na ALL.

Analýza dat výkonu dotazů

Tabulky používané úložištěm dotazů můžete dotazovat přímo. Pokud používáte Azure Database for MySQL, připojte se k serveru a spusťte následující dotazy:

SELECT * FROM mysql.query_store;

SELECT * FROM mysql.query_store_wait_stats;

Pokud používáte Azure Database for PostgreSQL, spusťte místo toho následující dotazy:

SELECT * FROM query_store.qs_view;

SELECT * FROM query_store.pgms_wait_sampling_view;

V obou případech první dotaz zobrazí text pro každý nedávno spuštěný dotaz a hostitele statistik o tom, jak dlouho trvalo kompilace a spuštění dotazu. Druhý dotaz zobrazí informace o událostech čekání. K události čekání dochází v případě, že jeden dotaz není spuštěný, protože vyžaduje prostředky uchovávané jiným dotazem.

Pokud prozkoumáte úložiště dotazů přímo, můžete vygenerovat vlastní sestavy a získat podrobný přehled o fungování systému. Množství dostupných dat ale může ztížit pochopení toho, co se děje. Azure Database for MySQL/PostgreSQL nabízí dva další nástroje, které vám pomůžou s procházením těchto dat – Query Performance Insight a Doporučení pro dotazy.

Query Performance Insight je grafický nástroj dostupný na stránce Query Performance Insight pro váš server. Na kartě Dlouhotrvající dotazy se zobrazují statistiky pro nejdéle běžící dotazy. Určíte časové období a přibližujete ho během několika minut. Legenda zobrazuje text každého dotazu spolu s dobou trvání a počtem spuštění dotazu. Graf poskytuje srovnávací pohled na dobu trvání každého dotazu. Data si prohlížíte podle průměrného času každého dotazu, ale je to také pokyn k zobrazení celkového času (počtu provádění doby trvání * ) pro každý dotaz. Následující obrázek ukazuje příklad:

Image of the Query Performance Insight page for Azure Database for PostgreSQL, showing the Long running queries tab.

Karta Statistika čekání zobrazuje informace o události čekání pro každý dotaz. Zobrazí se doba strávená dotazem, který čeká na různé prostředky.

Image of the Query Performance Insight page for Azure Database for PostgreSQL, showing the Wait statistics tab.

Události čekání obvykle spadají do tří kategorií:

  • Uzamčení čeká. K těmto událostem dochází v případě, že se dotaz pokouší přečíst nebo upravit data zamknutá jiným dotazem. Pokud se setkáte s velkým počtem čekání na uzamčení, zkontrolujte dlouhotrvající transakce nebo operace, které používají velmi omezující úroveň izolace.
  • Vstupně-výstupní operace čekají. K tomuto typu čekání dochází v případě, že dotaz provádí značné množství vstupně-výstupních operací. Příčinou může být špatně navržený dotaz (kontrola klauzule WHERE ), neefektivní operace spojení nebo úplná kontrola tabulek způsobená chybějícím indexem.
  • Čekání na paměť. Pokud není k dispozici dostatek paměti pro zpracování dotazu, dojde k čekání na paměť. Dotaz se může pokusit přečíst velké množství dat nebo může být blokovaný jinými dotazy, které ho zablokují. Opět to může znamenat, že chybí indexy, což způsobuje, že dotazy čtou celé tabulky do paměti.

Je také vysoce pravděpodobné, že jedna forma čekání aktivuje jinou, takže tyto problémy nemůžete nutně zkoumat izolovaně. Například transakce, která čte a aktualizuje data v různých tabulkách, může být předmětem čekání na paměť. Tato transakce může mít zamknutá data, která způsobí, že jiná transakce způsobí čekání na uzamčení.

Stránka Doporučení k výkonu pro server přebírá informace uložené v úložišti dotazů a používá je k tomu, aby doporučení k ladění databáze pro úlohy, ke kterým dochází.