Najlepsze praktyki dotyczące Query Store
Dotyczy: SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
SQL Database w Microsoft Fabric
W tym artykule przedstawiono najlepsze praktyki dotyczące używania wskazówek dla Magazynu Zapytań . Wskazówki dotyczące magazynu zapytań umożliwiają kształtowanie kształtów planu zapytania bez modyfikowania kodu aplikacji.
- Aby uzyskać więcej informacji na temat konfigurowania magazynu zapytań i administrowania nimi, zobacz Monitorowanie wydajności przy użyciu magazynu zapytań.
- Aby uzyskać informacje na temat odnajdywania użytecznych informacji i dostrajania wydajności przy użyciu Query Store, zobacz Dostrajanie wydajności przy użyciu Query Store.
Przypadki użycia wskazówek dla Query Store
Rozważ następujące przypadki użycia jako idealne podpowiedzi Query Store. Aby uzyskać więcej informacji, zobacz Kiedy używać wskazówek magazynu zapytań.
Ostrożność
Ponieważ optymalizator zapytań programu SQL Server zazwyczaj wybiera najlepszy plan wykonania zapytania, zalecamy używanie wskazówek tylko w ostateczności dla doświadczonych deweloperów i administratorów baz danych. Aby uzyskać więcej informacji, zobacz Wskazówki dotyczące zapytań.
Gdy nie można zmienić kodu
Korzystanie z wskazówek magazynu zapytań umożliwia wpływanie na plany wykonywania zapytań bez zmieniania kodu aplikacji lub obiektów bazy danych. Żadna inna funkcja nie umożliwia szybkiego i łatwego stosowania wskazówek dotyczących zapytań.
Możesz użyć podpowiedzi Query Store, na przykład, aby korzystać z procesów ETL bez ponownego wdrażania kodu. Dowiedz się, jak ulepszyć ładowanie zbiorcze z pomocą wskazówek Query Store, oglądając to 14-minutowe wideo:
Wskazówki Query Store to lekkie metody dostrajania zapytań, ale jeśli zapytanie stanie się problematyczne, należy zająć się nim poprzez bardziej znaczące zmiany w kodzie. Jeśli regularnie odczuwasz potrzebę stosowania wskazówek Query Store do zapytania, rozważ całkowite przepisanie większego zapytania. Optymalizator zapytań programu SQL Server zazwyczaj wybiera najlepszy plan wykonania zapytania. Zalecamy używanie wskazówek tylko w ostateczności dla doświadczonych deweloperów i administratorów baz danych.
Aby dowiedzieć się, które podpowiedzi dotyczące zapytań można zastosować, zobacz Obsługiwane podpowiedzi dotyczące zapytań.
W przypadku dużego obciążenia transakcji lub kodu o znaczeniu krytycznym
Jeśli zmiany kodu są niepraktyczne z powodu wysokich wymagań dotyczących dostępności lub obciążenia transakcyjnego, podpowiedzi Magazynu Zapytań mogą szybko zastosować podpowiedzi dotyczące zapytań do istniejących obciążeń zapytań. Dodawanie i usuwanie wskazówek Query Store jest łatwe.
Wskazówki dotyczące przechowywania zapytań można dodawać do partii i usuwać z partii zapytań w celu optymalizacji wydajności w oknach czasowych zaplanowanych na okresy wyjątkowego obciążenia.
Jako zamiennik instrukcji planu
Przed wprowadzeniem wskazówek Query Store deweloper musiałby polegać na przewodnikach planu do wykonywania podobnych zadań, które mogą być złożone w użyciu. Wskazówki dotyczące magazynu zapytań są zintegrowane z funkcjami magazynu zapytań programu SQL Server Management Studio (SSMS) w celu wizualnego eksplorowania zapytań.
W przypadku przewodników dotyczących planu konieczne jest przeszukiwanie wszystkich planów przy użyciu fragmentów zapytań. Funkcja wskazówek Query Store nie wymaga, aby zapytania były dokładnie dopasowane, by wpłynąć na wynikowy plan zapytania. Wskazówki magazynu zapytań można zastosować do query_id
w bazie danych magazynu zapytań.
Podpowiedzi magazynu zapytań zastępują zakodowane na stałe podpowiedzi na poziomie instrukcji oraz istniejące wskazówki dotyczące planu.
Rozważ nowszy poziom zgodności
Wskazówki dotyczące magazynu zapytań mogą być cenną metodą, gdy nowszy poziom zgodności bazy danych nie jest dostępny ze względu na specyfikację dostawcy lub większe opóźnienia testowania, na przykład. Jeśli dla bazy danych jest dostępny wyższy poziom zgodności, rozważ uaktualnienie poziomu zgodności bazy danych pojedynczego zapytania, aby skorzystać z najnowszych optymalizacji wydajności i funkcji programu SQL Server.
Jeśli na przykład masz wystąpienie programu SQL Server 2022 (16.x) z bazą danych na poziomie zgodności 140, nadal możesz używać podpowiedzi Query Store, aby uruchamiać poszczególne zapytania na poziomie zgodności 160. Możesz użyć następującej wskazówki:
EXEC sys.sp_query_store_set_hints @query_id= 39, @query_hints = N'OPTION(USE HINT(''QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_160''))';
Aby uzyskać kompletny samouczek, zobacz Wskazówki dotyczące magazynu zapytań Przykłady.
Rozważ starszy poziom zgodności po uaktualnieniu
Innym przypadkiem, w którym wskazówki Query Store mogą pomóc, jest wtedy, kiedy zapytania nie mogą być modyfikowane bezpośrednio po migracji lub uaktualnieniu wystąpienia programu SQL Server. Użyj wskazówek magazynu zapytań, aby zastosować poprzedni poziom zgodności dla zapytania, dopóki nie będzie można go przepisać lub w inny sposób zaadresować w celu zapewnienia dobrego działania na najnowszym poziomie zgodności. Zidentyfikuj zapytania odstające, które mają regresję na wyższym poziomie zgodności, korzystając z raportu zapytań z regresją w Query Store, przy użyciu narzędzia Query Tuning Advisor podczas migracji lub innej telemetrii aplikacji na poziomie zapytań. Aby uzyskać więcej informacji na temat różnic między poziomami zgodności, zapoznaj się z Różnice między poziomami zgodności.
Po przetestowaniu wydajności nowego poziomu zgodności i wdrożeniu wskazówek magazynu zapytań w ten sposób można uaktualnić poziom zgodności całej bazy danych, zachowując jednocześnie kluczowe problematyczne zapytania na poprzednim poziomie zgodności bez żadnych zmian w kodzie.
Uwagi dotyczące wskazówek dla Magazynu Zapytań
Podczas wdrażania wskazówek Query Store należy wziąć pod uwagę następujące scenariusze.
Zmiany dystrybucji danych
Przewodniki planów, wymuszone plany poprzez Magazyn Zapytań i wskazówki Magazynu Zapytań zastępują podejmowanie decyzji optymalizatora. Wskazówka dotycząca Query Store może być teraz korzystna, ale w przyszłości już nie. Na przykład, jeśli wskazówka dotycząca Query Store pomaga w zapytaniu przy poprzedniej dystrybucji danych, może być niekorzystna, jeśli operacje DML na dużą skalę zmienią dane. Nowa dystrybucja danych może spowodować, że optymalizator podejmie lepszą decyzję niż wskazówka. Ten scenariusz jest najczęstszą konsekwencją wymuszania zachowania planu.
Regularnie ponownie oceniaj strategię podpowiedzi Query Store.
Ponownie oceń istniejącą strategię podpowiedzi Query Store w następujących przypadkach:
- Po wystąpieniu znanych zmian dużego rozkładu danych.
- Gdy zmieni się cel poziomu usługi (SLO) w usłudze Azure SQL Database, wystąpieniu zarządzanym lub maszynie wirtualnej.
- Gdzie ustalanie planu stało się długotrwałe. Wskazówki dotyczące Query Store najlepiej nadają się do krótkoterminowych rozwiązań.
- Nieoczekiwane regresje wydajności.
Szeroki potencjał wpływu
Wskazówki dotyczące magazynu zapytań będą mieć wpływ na wszystkie wykonania zapytania, niezależnie od zestawu parametrów, aplikacji źródłowej, użytkownika lub zestawu wyników. W przypadku niezamierzonej regresji wydajności wskazówki magazynu zapytań utworzone za pomocą sys.sp_query_store_set_hints można łatwo usunąć za pomocą sys.sp_query_store_clear_hints.
Przed zastosowaniem podpowiedzi magazynu zapytań w środowisku produkcyjnym należy uważnie przeprowadzić zmiany związane z testowaniem obciążeniowym dla systemów o znaczeniu krytycznym lub poufnym.
Wymuszona parametryzacja i wskazówka RECOMPILE nie są obsługiwane
Zastosowanie wskazówki zapytania RECOMPILE ze wskazówkami magazynu zapytań nie jest obsługiwane, gdy opcja bazy danych PARAMETRYZACJA jest ustawiona na WYMUSZONE. Aby uzyskać więcej informacji, zobacz Wytyczne dotyczące stosowania wymuszonej parametryzacji.
Wskazówka RECOMPILE nie jest zgodna z wymuszonym ustawieniem parametryzacji na poziomie bazy danych. Jeśli baza danych ma wymuszoną parametryzację, a dyrektywa RECOMPILE jest częścią ciągu dyrektyw ustawionego w magazynie zapytań dla zapytania, aparat bazy danych zignoruje dyrektywę RECOMPILE i zastosuje inne dyrektywy, jeśli zostaną użyte. Ponadto, począwszy od lipca 2022 r. w usłudze Azure SQL Database, należy wydać ostrzeżenie (kod błędu 12461) z informacją, że wskazówka RECOMPILE została zignorowana.
Aby uzyskać informacje na temat tego, które podpowiedzi zapytań można zastosować, zapoznaj się z Obsługiwane podpowiedzi zapytań.
Zobacz też
- Wskazówki dotyczące Query Store
- sys.query_store_query_hints (Transact-SQL)
- sys.sp_query_store_set_hints (Transact-SQL)
- sys.sp_query_store_clear_hints (Transact-SQL)
- zapisz plan wykonywania w formacie XML
- Wyświetlanie i Zapisywanie Planów Wykonywania
- Wskazówki (Transact-SQL) — Zapyta