Scénáře použití úložiště dotazů – Flexibilní server Azure Database for PostgreSQL
PLATÍ PRO: Flexibilní server Azure Database for PostgreSQL
Úložiště dotazů můžete použít v nejrůznějších scénářích, ve kterých je důležité sledovat a udržovat předvídatelný výkon úloh. Zvažte následující příklady:
- Identifikace a ladění drahých dotazů
- Máte možnost testování A/B.
- Identifikujte a vylepšete improvizované úlohy.
Identifikace a ladění drahých dotazů
Identifikace dlouhotrvajících dotazů
Pomocí zobrazení úložiště dotazů na azure_sys
databázi serveru můžete rychle identifikovat nejdéle běžící dotazy. Tyto dotazy mají tendenci využívat většinu prostředků. Optimalizace nejdéle běžících dotazů může zvýšit výkon uvolněním prostředků používaných jinými dotazy spuštěnými ve vašem systému.
Cílové dotazy s rozdíly výkonu
Úložiště dotazů rozdělí data o výkonu do časových oken, abyste mohli sledovat výkon dotazu v průběhu času. To vám pomůže přesně určit, které dotazy přispívají ke zvýšení celkové doby strávené. V důsledku toho můžete řešit potíže s vymezeným oborem úloh.
Ladění drahých dotazů
Když identifikujete dotaz s neoptimálním výkonem, akce, kterou provedete, závisí na povaze problému. Některé z těchto akcí můžou být:
- Ujistěte se, že jsou statistiky aktuální pro podkladové tabulky používané dotazem.
- Zvažte přepsání drahých dotazů. Využijte například parametrizaci dotazů a snižte využití ad hoc SQL. Implementujte optimální logiku při čtení dat, jako je použití filtrování dat na straně databáze, a ne na straně aplikace.
Testování A/B
Úložiště dotazů můžete použít k porovnání výkonu úloh před a po změně aplikace, kterou plánujete zavést, nebo před a po migraci. Ukázkové scénáře použití úložiště dotazů k vyhodnocení dopadu změn na výkon úloh:
- Migrace mezi hlavními verzemi PostgreSQL
- Uvedení nové verze aplikace
- Úprava množství prostředků udělených serveru
- Změna některého z parametrů serveru, které ovlivňují chování serveru.
- Vytváření chybějících indexů v tabulkách odkazovaných nákladovými dotazy
- Migrace z jednoúčelového serveru Azure Database for PostgreSQL na flexibilní server Azure Database for PostgreSQL
V některém z těchto scénářů použijte následující pracovní postup:
- Spusťte úlohu s úložištěm dotazů před plánovanou změnou a vygenerujte standardní hodnoty výkonu.
- Použijte požadované změny v řízeném okamžiku v čase.
- Pokračujte ve spouštění úlohy během dostatečné doby, abyste po změně měli jasný přehled o výkonu systému.
- Porovnejte výsledky z před a po změně.
- Rozhodněte se, jestli chcete změnu zachovat, nebo ji vrátit zpět.
Identifikace a zlepšení improvizovaných úloh
Některé úlohy nemají dominantní dotazy, které můžete vyladit, aby se zlepšil celkový výkon aplikace. Tyto úlohy jsou obvykle charakterizovány relativně velkým počtem jedinečných dotazů, z nichž každý využívá část systémových prostředků. Každý jedinečný dotaz se spouští zřídka, takže jejich spotřeba za běhu není kritická. Na druhou stranu vzhledem k tomu, že aplikace neustále generuje nové dotazy, je při kompilaci dotazů vynaložena významná část systémových prostředků, což není optimální. K této situaci obvykle dochází v případě, že vaše aplikace generuje dotazy (místo použití uložených procedur nebo parametrizovaných dotazů) nebo pokud spoléhá na architektury mapování objektů, které ve výchozím nastavení generují dotazy.
Pokud máte kontrolu nad kódem aplikace, můžete zvážit přepsání vrstvy přístupu k datům tak, aby používaly uložené procedury nebo parametrizované dotazy. Tato situace se ale dá vylepšit i bez změn aplikace tím, že vynutí parametrizaci dotazů pro celou databázi (všechny dotazy) nebo pro jednotlivé šablony dotazů se stejnou hodnotou hash dotazu.