| Termin | Definicja |
|---|---|
| SQL Server 2019 Compatibility | Poziom zgodności SQL Server 2019 obejmuje m.in. udoskonalenia w obsłudze statystyk i przetwarzania równoległego. Poziom zgodności 150 w SQL Server 2019SQL Server 2019 Compatibility oznacza poziom zgodności bazy danych ustawiony dla SQL Server 2019, którego wartość numeryczna wynosi 150. Poziom zgodności jest właściwością konkretnej bazy danych, a nie niezależną wersją zainstalowanego silnika. Dzięki temu baza może działać na nowszej instancji SQL Server, a sposób interpretowania części zapytań, optymalizacji planów wykonania i wybranych zachowań języka T-SQL może być kontrolowany oddzielnie dla każdej bazy. Poziom 150 nie zmienia automatycznie formatu wszystkich danych ani nie konwertuje kodu aplikacji. Określa zestaw zachowań zgodnych z SQL Server 2019, w tym reguły wykorzystywane przez optymalizator zapytań. Jeżeli baza została przeniesiona ze starszej wersji SQL Server, podniesienie poziomu zgodności może wpłynąć na wybór planów wykonania. Z tego powodu zmianę należy traktować jako modyfikację konfiguracji środowiska, którą warto poprzedzić testami zapytań i procedur używanych przez aplikację. Statystyki i informacje o rozkładzie danychStatystyki w SQL Server opisują rozkład wartości w kolumnach i indeksach. Optymalizator korzysta z nich między innymi podczas szacowania liczby wierszy, które zostaną zwrócone przez filtr, połączenie tabel albo grupowanie. Trafne oszacowanie wpływa na wybór operatorów planu wykonania, rozmiary przydzielanych struktur roboczych oraz decyzję, czy korzystniejsze będzie przetwarzanie szeregowe, czy równoległe. SQL Server 2019 z poziomem zgodności 150 wykorzystuje mechanizmy optymalizacji dostępne dla tej wersji silnika, w tym usprawnienia związane z utrzymywaniem i używaniem statystyk. W praktyce nie oznacza to, że każda statystyka zostanie odświeżona przy każdym zapytaniu. Aktualizacja zależy od zmian danych, ustawień automatycznego tworzenia i aktualizowania statystyk oraz charakterystyki tabeli. Przy analizie problemu z wydajnością należy więc sprawdzić aktualność statystyk, ich zakres oraz to, czy plan wykonania opiera się na danych odpowiadających obecnej zawartości tabel. Równoległość, optymalizator i plany wykonaniaPrzetwarzanie równoległe polega na podziale pracy zapytania pomiędzy kilka wątków wykonawczych. SQL Server dobiera taki plan na podstawie między innymi przewidywanego kosztu operacji, ustawienia maksymalnego stopnia równoległości oraz progu kosztu równoległości. Jeżeli szacowana praca jest niewielka, plan szeregowy może być właściwy. Przy dużych skanach, agregacjach lub złożonych połączeniach optymalizator może wybrać plan równoległy, zawierający między innymi operatory rozdzielające i scalające strumień wierszy. Poziom zgodności 150 jest powiązany z funkcjami inteligentnego przetwarzania zapytań wprowadzonymi w SQL Server 2019. Należą do nich między innymi mechanizmy dotyczące opóźnionej kompilacji zmiennych tabel oraz sprzężenia zwrotnego dla przydziału pamięci w wybranych scenariuszach. Ich działanie zależy od rodzaju zapytania, konfiguracji bazy i spełnienia warunków wymaganych przez daną funkcję. Samo ustawienie poziomu 150 nie gwarantuje przyspieszenia każdego zapytania, ponieważ końcowy efekt zależy od indeksów, statystyk, rozmiaru danych, blokad, dostępnych zasobów i rzeczywistego planu wykonania. Weryfikacja ustawienia i bezpieczna zmianaAktualny poziom zgodności można sprawdzić w widoku katalogowym Po zmianie należy porównać najważniejsze zapytania przed i po migracji. Weryfikacja powinna obejmować czas wykonania, liczbę odczytów logicznych, przydział pamięci, użycie procesora, ostrzeżenia w planie oraz występowanie blokowania. Szczególną uwagę warto poświęcić procedurom składowanym, raportom i zapytaniom korzystającym z tabel o szybko zmieniającej się zawartości. Jeżeli wynik lub wydajność ulegną pogorszeniu, przyczyną może być nowy plan wykonania, nieaktualna statystyka albo różnica w zachowaniu optymalizatora, a nie uszkodzenie samej bazy. Diagnostyka komputera, na którym działa narzędzie administracyjne lub aplikacja kliencka, powinna obejmować również połączenie sieciowe, sterownik i lokalną konfigurację oprogramowania. |