Zdecyduj, czy asystent dostrajania zapytań (QTA) jest odpowiedni dla Ciebie

Ukończone

Masz świadomość potencjalnej regresji planu zapytań i utraty wydajności po uaktualnieniu wersji bazy danych. Aby ułatwić utrzymanie wydajności po uaktualnieniu bazy danych, należy znaleźć najlepszą metodę identyfikowania i ograniczania regresji zapytań. W tej lekcji opisano, jak można używać Magazynu zapytań i Asystenta dostrajania zapytań (QTA), aby zapewnić, że obniżona wydajność nie jest problemem po uaktualnieniu.

Rozpocznij pracę z magazynem zapytań i asystentem dostrajania zapytań.

QTA zależy od danych magazynu zapytań, aby znaleźć zapytania, które wykazują pogorszenie po uaktualnieniu. Magazyn zapytań umożliwia zbieranie metryk w starszej wersji bazy danych przed uaktualnieniem.

Magazyn zapytań został wprowadzony w programie SQL Server 2016, a asystent do analizy zapytań został wprowadzony w programie SQL Server 2017. Każda wersja bazy danych uruchomiona w wystąpieniu programu SQL Server 2022 może korzystać z obu tych funkcji. Te narzędzia są zintegrowane z programem SQL Server Management Studio (SSMS) i działają na poziomie bazy danych.

Poziom zgodności bazy danych określa jej wersję, która z kolei określa wersję narzędzia do szacowania kardynalności , z którego korzysta. Narzędzie do szacowania kardynalności przewiduje liczbę wierszy, które zapytanie prawdopodobnie zwróci, aby optymalizator zapytań mógł wybrać plan o najniższych kosztach. Program SQL Server 2014 wprowadził uaktualniony algorytm narzędzia do szacowania kardynalności, który przynosi korzyści większości zapytań, ale rzadko ma negatywny wpływ na wydajność.

Aby zmierzyć wpływ na wydajność, magazyn zapytań zgłasza regresję zapytań i zapytań, które zużywają najwięcej zasobów systemowych. QTA porównuje dane wydajności zapytań z Query Store przed i po uaktualnieniu bazy danych oraz przeprowadza eksperymenty na zapytaniach w celu poprawy wydajności.

Notatka

Asystent QTA nie jest dostępny dla baz danych Azure SQL Database ani SQL Managed Instance. W przypadku tych baz danych rozważ użycie rozszerzenia migracji Azure SQL dla programu Azure Data Studio.

QTA i automatyczna korekta planu

Gdy program SQL Server uruchamia zapytanie Transact-SQL (T-SQL), analizuje możliwe plany, które mogą wykonywać zapytanie. Program SQL Server buforuje plany zapytań, które zostały pomyślnie wykonane i ponownie są używane podczas ponownego wykonywania zapytań.

Program SQL Server wybiera optymalny plan dla zapytania i używa go, dopóki okoliczności nie wymuszą wyboru nowego. W takich okolicznościach aparat bazy danych może ponownie skompilować plan, dodać lub usunąć indeks albo zmienić statystyki.

To nie zawsze jest tak, że nowy plan jest ulepszeniem starego. Możesz uruchomić następujące polecenie, aby wyszukać zapytania, które mają plan regresji.

SELECT * FROM sys.dm_db_tuning_recommendations

Następnie można użyć procedury składowanej sp_force_plan, aby wymusić użycie zalecanego konkretnego planu przez SQL Server.

EXEC sp_force_plan @query_id = 1187, @plan_id = 1975

Procedura sp_force_plan jest ręcznym procesem, który może być żmudny, jeśli wiele zapytań ulega regresji w zaktualizowanej bazie danych. Program SQL Server 2017 wprowadził nową funkcję o nazwie automatyczną korektę planu w celu automatycznego dostrajania zapytań i usunięcia konieczności ręcznej interwencji. Można włączyć automatyczną korektę planu w bazie danych, uruchamiając następującą instrukcję.

ALTER DATABASE <database-name> SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON)

Po ustawieniu na poziomie bazy danych automatyczna korekta planu nakazuje programowi SQL Server użycie ostatniego dobrego planu zapytań. Program SQL Server nadal monitoruje plan w poszukiwaniu regresji podczas jego wykonywania, aby zapewnić optymalną wydajność.

Automatyczna korekta planu działa inaczej niż QTA. Użycie ostatniego dobrego planu może oznaczać przywrócenie wcześniejszego estymatora kardynalności. Z drugiej strony QTA przeprowadza eksperymenty, używając wersji estymatora kardynalności, która jest odwzorowana na docelowy poziom zgodności z bazą danych.

Streszczenie

QTA (Asystent zapytań) jest dostępny w programie SQL Server 2022 i do działania zależy od Query Store. QTA musi mieć dane bazowe magazynu zapytań dla bazy danych na poprzednim poziomie zgodności, aby mógł obserwować zapytania i wykonywać porównania po uaktualnieniu.

Automatyczna korekta planu, wprowadzona w programie SQL Server 2017, eliminuje konieczność ręcznego identyfikowania i wymuszania planu zapytania. Automatyczna korekta planu może być włączona na poziomie bazy danych, ale może przywrócić wcześniejszą wersję narzędzia do szacowania kardynalności. QTA używa wersji estymatora kardynalności odpowiadającej docelowemu poziomowi zgodności.