Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Tento článek popisuje správu úložiště dotazů SQL Serveru a okolních funkcí.
- Další informace o konfiguraci a správě pomocí úložiště dotazů najdete v tématu Monitorování výkonu pomocí úložiště dotazů.
Poznámka:
V SQL Serveru 2022 (16.x) je teď úložiště dotazů ve výchozím nastavení povolené pro všechny nově vytvořené databáze SQL Serveru, které pomáhají lépe sledovat historii výkonu, řešit problémy související s plánem dotazů a povolovat nové možnosti procesoru dotazů.
Výchozí nastavení úložiště dotazů ve službě Azure SQL Database
Tato část popisuje optimální výchozí hodnoty konfigurace ve službě Azure SQL Database, které jsou navržené tak, aby zajistily spolehlivé fungování úložiště dotazů a závislých funkcí. Výchozí konfigurace je optimalizovaná pro průběžné shromažďování dat, která je minimální doba strávená ve stavu VYPNUTO/READ_ONLY. Další informace o všech dostupných možnostech Query Store naleznete v tématu ALTER DATABASE SET možnosti nastavení (Transact-SQL).
| Konfigurace | Description | Výchozí | Comment |
|---|---|---|---|
| MAX_STORAGE_SIZE_MB | Určuje limit datového prostoru, který úložiště dotazů může převzít v databázi zákazníka. | 100 před SQL Serverem 2019 (15.x) 1000 počínaje verzí SQL Server 2019 (15.x) |
Vynuceno pro nové databáze |
| DÉLKA_INTERVALU_MINUTY | Definuje velikost časového intervalu, během kterého se shromážděné statistiky modulu runtime pro plány dotazů agregují a uchovávají. Každý aktivní plán dotazů má po dobu definovanou touto konfigurací maximálně jeden řádek. | 60 | Povinné pro nové databáze |
| Práh zastaralého dotazu (STALE_QUERY_THRESHOLD_DAYS) | Zásady čištění založené na čase, které řídí dobu uchovávání trvalých statistik modulu runtime a neaktivních dotazů | 30 | Vynuceno pro nové databáze a databáze s předchozím výchozím nastavením (367) |
| režim čištění na základě velikosti | Určuje, jestli se provádí automatické vyčištění dat, když se velikost dat úložiště dotazů blíží limitu. | AUTO | Vynuceno pro všechny databáze |
| Režim zachycení dotazu | Určuje, jestli se sledují všechny dotazy nebo pouze podmnožina dotazů. | AUTO | Vynuceno pro všechny databáze |
| DATA_FLUSH_INTERVAL_SECONDS | Určuje maximální dobu, během které se zachycené statistiky modulu runtime uchovávají v paměti před vyprázdněním na disk. | 900 | Povinné pro nové databáze |
Důležité
Tato výchozí nastavení se automaticky použijí v poslední fázi aktivace úložiště dotazů ve službě Azure SQL Database. Jakmile je služba Azure SQL Database povolená, nezmění hodnoty konfigurace nastavené zákazníky, pokud nemají negativní vliv na primární úlohy nebo spolehlivé operace úložiště dotazů.
Poznámka:
Úložiště dotazů nejde zakázat v jednoúčelové databázi Azure SQL Database a elastickém fondu. Při spuštění ALTER DATABASE [database] SET QUERY_STORE = OFF se zobrazí upozornění 'QUERY_STORE=OFF' is not supported in this version of SQL Server..
Pokud chcete zůstat u vlastních nastavení, pomocí příkazu ALTER DATABASE s možnostmi úložiště dotazů se vraťte do předchozího stavu. Projděte si osvědčené postupy v úložišti dotazů , abyste zjistili, jak zvolit optimální parametry konfigurace.
Nastavení optimálního režimu zachytávání úložiště dotazů
Udržujte nejrelevantní data v úložišti dotazů. Následující tabulka popisuje typické scénáře pro každý režim zachycení úložiště dotazů:
| Režim zachycení úložiště dotazů | Scenario |
|---|---|
| Všechny | Důkladně analyzujte úlohy z hlediska obrazců všech dotazů a četnosti jejich provádění a dalších statistik. Identifikujte nové dotazy ve vaší úloze. Zjistí, jestli se ad hoc dotazy používají k identifikaci příležitostí pro uživatele nebo automatické parametrizace. Poznámka: Toto je výchozí režim zachycení v SQL Serveru 2016 (13.x) a SQL Serveru 2017 (14.x). |
| Automatické | Zaměřte pozornost na relevantní a akční dotazy. Příkladem jsou dotazy, které se provádějí pravidelně nebo které mají významnou spotřebu prostředků. Poznámka: V SQL Serveru 2019 (15.x) a novějších verzích se jedná o výchozí režim zachycení. |
| Nic | Už jste zachytili sadu dotazů, kterou chcete monitorovat za běhu, a chcete odstranit rušivé prvky, které by mohly zavádět jiné dotazy. Žádná není vhodná pro testovací a benchmarkové prostředí. Žádná není vhodná také pro dodavatele softwaru, kteří dodávají konfiguraci úložiště dotazů nakonfigurovanou pro monitorování úloh aplikace. Žádné by se nemělo používat s opatrností, protože byste mohli vynechat příležitost sledovat a optimalizovat důležité nové dotazy. Nepoužívejte žádné, pokud nemáte konkrétní scénář, který ho vyžaduje. |
| na míru | SQL Server 2019 (15.x) zavedl vlastní režim zachycení pod příkazem ALTER DATABASE ... SET QUERY_STORE . Ačkoliv je nastavení Auto výchozí a doporučenou volbou, pokud stále existují obavy ohledně možné režie, kterou dotazové úložiště může zavádět, správci databáze mohou použít vlastní zásady zachytávání k lepšímu doladění chování dotazového úložiště. Další informace a doporučení najdete v části Vlastní zásady zachycení dále v tomto článku. Další informace o této syntaxi naleznete v tématu ALTER DATABASE SET Options. |
Poznámka:
Kurzory, dotazy uvnitř uložených procedur a nativně kompilované dotazy se vždy zaznamenávají, když je režim zachycení úložiště dotazů nastavený na Vše, Automaticky nebo Vlastní. Pokud chcete zaznamenávat nativně kompilované dotazy, povolte shromažďování statistik pro jednotlivé dotazy pomocí sys.sp_xtp_control_query_exec_stats.
Zachování nejrelevavantnějších dat v úložišti dotazů
Nakonfigurujte úložiště dotazů tak, aby obsahovalo jenom relevantní data, aby běžela nepřetržitě a poskytovalo skvělé prostředí pro řešení potíží s minimálním dopadem na běžnou úlohu.
Následující tabulka obsahuje osvědčené postupy:
| Nejlepší praxe | Setting |
|---|---|
| Omezení uchovávaných historických dat | Nakonfigurujte zásady založené na čase pro aktivaci automatického čištění. |
| Vyfiltrujte nerelevantní dotazy. | Nakonfigurujte režim zachytávání úložiště dotazů na automatické. |
| Když dosáhnete maximální velikosti, odstraňte méně relevantní dotazy. | Aktivace zásad čištění na základě velikosti |
Vlastní zásady zachycení
Pokud je povolený režim zachycení vlastního úložiště dotazů, jsou v novém nastavení zásad zachycení úložiště dotazů k dispozici další konfigurace úložiště dotazů, které umožňují vyladit shromažďování dat na konkrétním serveru.
Nová vlastní nastavení definují, co se stane během časového prahu interní politiky zachycení. Jedná se o časovou hranici, během které se vyhodnocují konfigurovatelné podmínky a pokud jsou splněné, dotaz má nárok na zachycení úložištěm dotazů.
Režim zachycení úložiště dotazů určuje zásady zachytávání dotazů pro úložiště dotazů.
- Vše: Zachytává všechny dotazy. Tato možnost je výchozí v SQL Serveru 2016 (13.x) a SQL Serveru 2017 (14.x).
- Automaticky: Nevýznamné dotazy a dotazy s nevýznamnou dobou kompilace a doby trvání provádění se ignorují. Prahové hodnoty počtu spuštění, kompilace a doby trvání modulu runtime jsou interně určeny. Počínaje SQL Serverem 2019 (15.x) je to výchozí možnost.
- Žádné: Úložiště dotazů přestane zachytávat nové dotazy.
- Vlastní: Umožňuje další řízení a možnosti doladit zásady shromažďování dat. Nová vlastní nastavení určují, co se stane během časového intervalu interní politiky zachycení. Jedná se o časovou hranici, během které se vyhodnocují konfigurovatelné podmínky a pokud jsou splněné, dotaz má nárok na zachycení úložištěm dotazů.
Ladění vhodných vlastních zásad zachytávání pro vaše prostředí by se mělo zvážit v těchto případech:
- Databáze je velmi velká.
- Databáze má velký počet jedinečných ad hoc dotazů.
- Databáze má specifická omezení velikosti nebo růstu.
Stažení nejnovější verze aplikace SQL Server Management Studio (SSMS)
Zobrazení aktuálních nastavení v sadě Management Studio:
- V Průzkumníku objektů aplikace SQL Server Management Studio klikněte pravým tlačítkem myši na databázi.
- Vyberte Vlastnosti.
- Vyberte Úložiště dotazů. Na stránce Úložiště dotazů ověřte, že Režim operace (požadováno) je čtení i zápis.
- Změňte režim zachytávání úložiště dotazů na vlastní.
- Všimněte si, že čtyři pole zásad zachycení v úložišti dotazů jsou teď povolená a konfigurovatelná.
Příklad vlastních zásad zachycení
Následující příklad nastaví QUERY_CAPTURE_MODE na AUTO a nastaví vlastní režim zachycení. Každá z následujících možností nastaví vlastní zásady zachycení na výchozí hodnotu v SQL Serveru 2022 (16.x). Zvažte úpravu těchto hodnot, abyste snížili počet zachycených dotazů, a proto snižte nároky na disk úložiště dotazů. Tyto hodnoty doporučujeme postupně měnit malými přírůstky.
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1000,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Následující ukázkový dotaz změní existující úložiště dotazů tak, aby používalo vlastní zásadu zachycení, která přepíše výchozí nastavení pro EXECUTION_COUNT a TOTAL_COMPILE_CPU_TIME_MS.
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE = ON
(
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
EXECUTION_COUNT = 100,
TOTAL_COMPILE_CPU_TIME_MS = 10000
)
);
Maximální velikost úložiště dotazů
Výchozí maximální velikost úložiště dotazů je 1000 MB počínaje SQL Serverem 2019 (15.x). V předchozích verzích byla výchozí hodnota 100 MB. Zvýšení maximálního limitu velikosti úložiště dotazů je vhodné v zaneprázdněné databázi s mnoha jedinečnými plány dotazů. Úprava zásad zachytávání (viz předchozí část) je důležitějším aspektem pro omezení velikosti úložiště dotazů na disku a pro zabránění tomu, aby úložiště dotazů přešlo do režimu READ_ONLY. Zatímco Úložiště dotazů shromažďuje dotazy, plány provádění a statistiky, jeho velikost v databázi roste, dokud nedosáhnete tohoto limitu. V takovém případě úložiště dotazů automaticky změní režim operace na READ_ONLY a přestane shromažďovat nová data, což znamená, že analýza výkonu už není přesná.
- Ve SQL Serveru a Azure SQL Managed Instance se omezení
MAX_STORAGE_SIZE_MBnení striktně vynucováno. - V Azure SQL Database je maximální povolená
MAX_STORAGE_SIZE_MBhodnota 10 240 MB.
Velikost úložiště se kontroluje jenom v případech, kdy úložiště dotazů zapisuje data na disk. Tento interval je nastaven možností DATA_FLUSH_INTERVAL_SECONDS nebo možností dialogového okna Úložiště dotazů v sadě Management Studio Interval vyprázdnění dat.
- Výchozí hodnota intervalu je 900 sekund (nebo 15 minut).
- Pokud úložiště dotazů porušilo limit
MAX_STORAGE_SIZE_MBmezi kontrolami velikosti úložiště, přejde do režimu jen pro čtení. - Pokud je povolená
SIZE_BASED_CLEANUP_MODE, aktivuje se také mechanismus čištění, který vynucuje limitMAX_STORAGE_SIZE_MB.- Jakmile se uvolní dostatek místa, mód úložiště dotazů se automaticky přepne zpět do módu READ_WRITE.
Další informace naleznete v části ALTER DATABASE SET OPTION MAX_STORAGE_SIZE_MB.
Interval vyprázdnění dat (minuty)
Interval vyprazdňování dat určuje, jak často se shromážděné provozní statistiky ukládají na disk. V aplikaci SQL Server Management Studio je hodnota v minutách, ale v Transact-SQL je vyjádřena v sekundách. Výchozí hodnota je 15 minut (900 sekund).
- Zvýšení intervalu vyprázdnění dat může snížit celkový dopad na vstupně-výstupní operace úložiště dotazů, ale způsobit, že zatížení vstupně-výstupních operací úložiště bude více spiky, s menším, ale těžším dopadem na využití disku. Zvažte použití vyšší hodnoty, pokud vaše úloha nevygeneruje velký počet různých dotazů a plánů, nebo pokud můžete odolat delší době uchovávání dat před vypnutím databáze.
- Snížení intervalu vyprázdňování dat snižuje množství dat Query Store, která by se ztratila v případě vypnutí, ztráty napájení nebo převzetí služeb při selhání. Může také vyhladit dopad vstupně-výstupních operací úložiště způsobený Úložištěm dotazů tím, že zapisuje na disk častěji, ale s menším množstvím dat.
Poznámka:
Použití příznaku trasování 7745 zabraňuje zapsání dat úložiště dotazů na disk v případě příkazu pro převzetí úloh při selhání nebo vypnutí. Další informace najdete v tématu Použití úložiště dotazů na důležitých serverech.
Úprava výchozích hodnot úložiště dotazů
Nakonfigurujte úložiště dotazů na základě požadavků na řešení potíží s úlohami a výkonem. Výchozí parametry jsou dostatečně dobré ke spuštění, ale měli byste sledovat, jak se úložiště dotazů chová v průběhu času, a odpovídajícím způsobem upravit jeho konfiguraci.
Zobrazení aktuálního nastavení úložiště dotazů
Zobrazte aktuální nastavení úložiště dotazů v sadě SQL Server Management Studio (SSMS) nebo T-SQL.
Stažení nejnovější verze aplikace SQL Server Management Studio (SSMS)
Zobrazení aktuálních nastavení v sadě Management Studio:
- V Průzkumníku objektů aplikace SQL Server Management Studio klikněte pravým tlačítkem myši na databázi.
- Vyberte Vlastnosti.
- Vyberte Úložiště dotazů.
Následující skript nastaví novou hodnotu pro maximální velikost (MB):
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (MAX_STORAGE_SIZE_MB = 1024);
Pomocí aplikace SQL Server Management Studio nebo Transact-SQL nastavte jinou hodnotu pro interval vyprázdnění dat:
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (DATA_FLUSH_INTERVAL_SECONDS = 900);
Interval shromažďování statistik: Definuje úroveň členitosti shromážděné statistiky modulu runtime vyjádřené v minutách. Výchozí hodnota je 60 minut. Zvažte použití nižší hodnoty, pokud potřebujete jemnější granularitu nebo kratší dobu zjistit a zmírnit problémy. Mějte na paměti, že hodnota přímo ovlivňuje velikost dat úložiště dotazů. Pomocí aplikace SQL Server Management Studio nebo Transact-SQL nastavte jinou hodnotu pro interval shromažďování statistik:
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (INTERVAL_LENGTH_MINUTES = 60);
Prahová hodnota pro zastaralé dotazy (dny): Zásady čištění založené na čase, které řídí dobu uchovávání trvalých statistik modulu runtime a neaktivních dotazů, vyjádřená ve dnech. Ve výchozím nastavení je úložiště dotazů nakonfigurované tak, aby data uchovála po dobu 30 dnů, což může být pro váš scénář zbytečně dlouhé.
Vyhněte se uchovávání historických dat, která neplánujete používat. Tento postup snižuje počet změn, které vedou ke stavu jen pro čtení. Velikost dat úložiště dotazů a doba detekce a zmírnění problému bude předvídatelnější. Ke konfiguraci zásad čištění na základě času použijte Management Studio nebo následující skript:
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 90));
Režim čištění na základě velikosti: Určuje, jestli se provádí automatické vyčištění dat, když velikost dat úložiště dotazů dosáhne limitu. Aktivujte čištění založené na velikosti, abyste měli jistotu, že úložiště dotazů vždy běží v režimu čtení a zápisu a shromažďuje nejnovější data. V případě náročných úloh není zaručeno, že čištění úložiště dotazů bude trvale udržovat velikost dat v rámci limitu. Je možné, že automatické čištění dat bude zaostávat a dočasně přejde do režimu pouze pro čtení.
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (SIZE_BASED_CLEANUP_MODE = AUTO);
Režim zachytávání úložiště dotazů: Určuje zásady zachytávání dotazů pro úložiště dotazů.
- Vše: Zachytává všechny dotazy. Tato možnost je výchozí v SQL Serveru 2016 (13.x) a SQL Serveru 2017 (14.x).
- Automaticky: Nevýznamné dotazy a dotazy s nevýznamnou dobou kompilace a doby trvání provádění se ignorují. Prahové hodnoty počtu spuštění, kompilace a doby trvání modulu runtime jsou interně určeny. Počínaje SQL Serverem 2019 (15.x) je to výchozí možnost.
- Žádné: Úložiště dotazů přestane zachytávat nové dotazy.
- Vlastní: Umožňuje další řízení a možnosti doladit zásady shromažďování dat. Nová vlastní nastavení definují, co se stane během časového limitu interní zásady zachycení. Jedná se o časovou hranici, během které se vyhodnocují konfigurovatelné podmínky a pokud jsou splněné, dotaz má nárok na zachycení úložištěm dotazů.
Důležité
Kurzory, dotazy uvnitř uložených procedur a nativně kompilované dotazy se vždy zaznamenávají, když je režim zachycení úložiště dotazů nastavený na Vše, Automaticky nebo Vlastní. Pokud chcete zaznamenávat nativně kompilované dotazy, povolte shromažďování statistik pro jednotlivé dotazy pomocí sys.sp_xtp_control_query_exec_stats.
Následující skript nastaví QUERY_CAPTURE_MODE na auto:
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE (QUERY_CAPTURE_MODE = AUTO);
Examples
Následující příklad nastaví QUERY_CAPTURE_MODE na AUTO a nastaví další doporučené možnosti v SQL Serveru 2016 (13.x):
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1000,
INTERVAL_LENGTH_MINUTES = 60
);
Následující příklad nastaví QUERY_CAPTURE_MODE auto a nastaví další doporučené možnosti v SQL Serveru 2017 (14.x), aby zahrnovaly statistiky čekání:
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO,
MAX_STORAGE_SIZE_MB = 1000,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON
);
Následující příklad nastaví vlastní zásady zachycení na výchozí nastavení SQL Serveru 2019 (15.x) místo nového výchozího režimu automatického zachycení. Další informace o možnostech vlastních zásad zachycení a výchozích nastaveních najdete v tématu <query_capture_policy_option_list>.
ALTER DATABASE [QueryStoreDB]
SET QUERY_STORE = ON
(
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
DATA_FLUSH_INTERVAL_SECONDS = 900,
MAX_STORAGE_SIZE_MB = 1000,
INTERVAL_LENGTH_MINUTES = 60,
SIZE_BASED_CLEANUP_MODE = AUTO,
MAX_PLANS_PER_QUERY = 200,
WAIT_STATS_CAPTURE_MODE = ON,
QUERY_CAPTURE_MODE = CUSTOM,
QUERY_CAPTURE_POLICY = (
STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100
)
);
Údržba úložiště dotazů
Tato část obsahuje několik pokynů pro správu samotné funkce úložiště dotazů.
Stav dotazového úložiště
Úložiště dotazů ukládá data do uživatelské databáze a proto má limit velikosti (nakonfigurovaný MAX_STORAGE_SIZE_MB). Pokud data v Query Store dosáhnou limitu, Query Store automaticky změní stav z čtení a zápisu na pouhé čtení a přestane shromažďovat nová data.
Dotaz sys.database_query_store_options určit, jestli je úložiště dotazů aktuálně aktivní a jestli aktuálně shromažďuje statistiky modulu runtime nebo ne.
SELECT actual_state, actual_state_desc, readonly_reason,
current_storage_size_mb, max_storage_size_mb
FROM sys.database_query_store_options;
Stav úložiště dotazů je určen sloupcem actual_state . Pokud se liší od požadovaného stavu, readonly_reason může vám sloupec poskytnout další informace. Když velikost úložiště dotazů překročí kvótu, funkce se přepne do režimu read_only a poskytne důvod. Informace o důvodech najdete v tématu sys.database_query_store_options.
Získání možností úložiště dotazů
Pokud chcete zjistit podrobné informace o stavu úložiště dotazů, spusťte následující příkaz v uživatelské databázi.
SELECT * FROM sys.database_query_store_options;
Nastavení intervalu úložiště dotazů
Interval agregace statistik doby běhu dotazu můžete změnit (výchozí hodnota je 60 minut). Nová hodnota intervalu se zobrazí prostřednictvím sys.database_query_store_options zobrazení.
ALTER DATABASE <database_name>
SET QUERY_STORE (INTERVAL_LENGTH_MINUTES = 15);
Pro INTERVAL_LENGTH_MINUTES nejsou povoleny libovolné hodnoty. Použijte jeden z následujících intervalů: 1, 5, 10, 15, 30, 60 nebo 1440 minut.
Poznámka:
Pro Azure Synapse Analytics se přizpůsobení možností konfigurace úložiště dotazů, jak je znázorněno v této části, nepodporuje.
Využití prostoru úložiště dotazů
Pokud chcete zkontrolovat aktuální velikost úložiště dotazů a limit, spusťte v uživatelské databázi následující příkaz.
SELECT current_storage_size_mb, max_storage_size_mb
FROM sys.database_query_store_options;
Pokud je úložiště úložiště dotazů plné, použijte k rozšíření úložiště následující příkaz.
ALTER DATABASE <database_name>
SET QUERY_STORE (MAX_STORAGE_SIZE_MB = <new_size>);
Nastavení možností úložiště dotazů
Pomocí jednoho příkazu ALTER DATABASE můžete nastavit několik možností úložiště dotazů najednou.
ALTER DATABASE <database name>
SET QUERY_STORE (
OPERATION_MODE = READ_WRITE,
CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 30),
DATA_FLUSH_INTERVAL_SECONDS = 3000,
MAX_STORAGE_SIZE_MB = 500,
INTERVAL_LENGTH_MINUTES = 15,
SIZE_BASED_CLEANUP_MODE = AUTO,
QUERY_CAPTURE_MODE = AUTO,
MAX_PLANS_PER_QUERY = 1000,
WAIT_STATS_CAPTURE_MODE = ON
);
Úplný seznam možností konfigurace naleznete v tématu ALTER DATABASE SET Options (Transact-SQL).
Vyčištění místa
Interní tabulky úložiště dotazů se vytvářejí v primární skupině souborů během vytváření databáze a tato konfigurace se nedá později změnit. Pokud vám dochází místo, můžete pomocí následujícího příkazu vymazat starší data úložiště dotazů.
ALTER DATABASE <db_name> SET QUERY_STORE CLEAR;
Případně můžete chtít vymazat pouze ad hoc data dotazů, protože je méně relevantní pro optimalizace dotazů a analýzu plánu, ale zabírá jen tolik místa.
V Azure Synapse Analytics není vymazání úložiště dotazů k dispozici. Data se automaticky uchovávají za posledních 7 dnů.
Odstranění ad hoc dotazů
Tím se vyprázdní ad hoc a interní dotazy z úložiště dotazů, takže úložiště dotazů nevyčerchá místo a odebere dotazy, které opravdu potřebujeme sledovat.
SET NOCOUNT ON
-- This purges adhoc and internal queries from
-- the Query Store in the current database
-- so that the Query Store does not run out of space
-- and remove queries we really need to track
DECLARE @id int;
DECLARE adhoc_queries_cursor CURSOR
FOR
SELECT q.query_id
FROM sys.query_store_query_text AS qt
JOIN sys.query_store_query AS q
ON q.query_text_id = qt.query_text_id
JOIN sys.query_store_plan AS p
ON p.query_id = q.query_id
JOIN sys.query_store_runtime_stats AS rs
ON rs.plan_id = p.plan_id
WHERE q.is_internal_query = 1 -- is it an internal query then we dont care to keep track of it
OR q.object_id = 0 -- if it does not have a valid object_id then it is an adhoc query and we don't care about keeping track of it
GROUP BY q.query_id
HAVING MAX(rs.last_execution_time) < DATEADD (minute, -5, GETUTCDATE()) -- if it has been more than 5 minutes since the adhoc query ran
ORDER BY q.query_id;
OPEN adhoc_queries_cursor ;
FETCH NEXT FROM adhoc_queries_cursor INTO @id;
WHILE @@fetch_status = 0
BEGIN
PRINT 'EXEC sp_query_store_remove_query ' + str(@id);
EXEC sp_query_store_remove_query @id;
FETCH NEXT FROM adhoc_queries_cursor INTO @id;
END
CLOSE adhoc_queries_cursor;
DEALLOCATE adhoc_queries_cursor;
Můžete definovat vlastní postup s jinou logikou pro vymazání dat, která už nechcete.
Předchozí příklad používá rozšířenou uloženou proceduru sp_query_store_remove_query k odebrání nepotřebných dat. Můžete také:
- Pomocí
sp_query_store_reset_exec_statsvymažte runtime statistiky pro daný plán. - Použijte
sp_query_store_remove_plank odebrání jednoho plánu.
Související obsah
- ALTER DATABASE SET Options (Transact-SQL)
- Zobrazení katalogu Query Store (Transact-SQL)
- uložené procedury úložiště dotazů (Transact-SQL)
- Použití úložiště dotazů s In-Memory OLTP
- Průvodce architekturou zpracování dotazů
- Pokyny pro úložiště dotazů
- Monitorování výkonu s využitím úložiště dotazů
- Ladění výkonu pomocí Úložiště dotazů
- historické ukládání a analýza dotazů ve službě Azure Synapse Analytics