| Termin | Definicja |
|---|---|
| SQL Server 2017 Compatibility | Poziom zgodności SQL Server 2017 wprowadza dalsze usprawnienia optymalizatora względem poprzednich wersji. Poziom zgodności 140 w SQL Server 2017SQL Server 2017 Compatibility oznacza poziom zgodności bazy danych z silnikiem SQL Server 2017. Dla tej wersji właściwą wartością jest poziom 140. Ustawienie przechowuje się na poziomie konkretnej bazy, a nie całej instancji. Dzięki temu jedna instancja SQL Server 2017 może obsługiwać bazy korzystające z różnych poziomów zgodności, o ile dany poziom jest przez nią obsługiwany. Poziom zgodności wpływa przede wszystkim na sposób interpretowania części zapytań, działanie optymalizatora oraz dostępność wybranych funkcji silnika. Nie jest tożsamy z numerem wersji zainstalowanego serwera. Baza może działać na SQL Server 2017, ale nadal mieć ustawiony niższy poziom, na przykład 130 odpowiadający SQL Server 2016. Takie rozwiązanie bywa stosowane po migracji, gdy konieczne jest zachowanie wcześniejszego zachowania planów wykonania. Zmiany optymalizatora dostępne przy poziomie 140Ustawienie poziomu 140 pozwala korzystać z usprawnień optymalizatora zapytań wprowadzonych dla SQL Server 2017. Należą do nich mechanizmy Adaptive Query Processing działające w określonych warunkach. SQL Server 2017 na poziomie 140 obsługuje między innymi adaptacyjne złączenia wsadowe, wykonywanie przeplatane dla wieloinstrukcyjnych funkcji tabelarycznych oraz sprzężenie zwrotne dotyczące przydziału pamięci dla zapytań wykonywanych w trybie batch. Adaptacyjne złączenie może odroczyć wybór pomiędzy złączeniem typu Nested Loops a Hash Join do momentu uzyskania informacji o rzeczywistej liczbie wierszy. Wykonywanie przeplatane pozwala wykonać wieloinstrukcyjną funkcję tabelaryczną przed ostatecznym opracowaniem dalszej części planu, dzięki czemu optymalizator otrzymuje dokładniejszą liczbę wierszy. Sprzężenie zwrotne dla pamięci może korygować kolejne wykonania zapytania, jeżeli wcześniejszy przydział pamięci był zbyt mały albo nadmierny. Dostępność tych mechanizmów zależy także od rodzaju zapytania, trybu wykonania oraz pozostałych ustawień bazy. Sprawdzanie i zmiana ustawienia bazyBieżący poziom zgodności można sprawdzić w widoku katalogowym Zmianę poziomu wykonuje się poleceniem Weryfikacja planów po migracji do SQL Server 2017Podniesienie poziomu z 130 do 140 nie powinno być traktowane jako zwykła zmiana numeru konfiguracyjnego. Jest to zmiana zachowania bazy, która może poprawić część zapytań, ale w innych przypadkach doprowadzić do wyboru planu wymagającego dodatkowej analizy. Do weryfikacji można wykorzystać Query Store, jeżeli został włączony dla danej bazy. Narzędzie przechowuje informacje o zapytaniach, planach i statystykach ich wykonania, co ułatwia porównanie sytuacji przed zmianą i po niej. Diagnostyka powinna obejmować także aktualność statystyk, indeksy, parametry procedur oraz zgodność ustawień bazy z wymaganiami aplikacji. Jeśli po zmianie pojawi się regresja, należy ustalić, czy wynika ona z nowego planu, błędnych estymacji, brakujących indeksów albo problemu niezwiązanego z poziomem zgodności. W zależności od przyczyny można tymczasowo wrócić do wcześniejszego poziomu, skorygować statystyki lub indeksy albo zastosować kontrolowane wymuszenie planu w Query Store. Poziom 140 nie zmienia automatycznie schematu tabel ani danych, ale wpływa na sposób wykonywania instrukcji przez silnik SQL Server 2017. |