Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

SQL Server 2014 Compatibility

Termin Definicja
SQL Server 2014 Compatibility

Poziom zgodności SQL Server 2014 zachowuje charakterystykę optymalizatora zapytań z tej wersji silnika.

Poziom zgodności 120 w SQL Server 2014

SQL Server 2014 Compatibility oznacza poziom zgodności bazy danych z silnikiem SQL Server 2014, oznaczany wartością 120. Ustawienie to jest właściwością konkretnej bazy danych, a nie całej instancji. Wpływa na sposób interpretowania części zapytań Transact-SQL oraz na zachowanie optymalizatora zapytań. Nie zmienia jednak wersji zainstalowanego silnika, jego plików wykonywalnych ani dostępnych funkcji administracyjnych instancji.

Poziom zgodności można sprawdzić w widoku katalogowym sys.databases, odczytując kolumnę compatibility_level. Dla bazy działającej z ustawieniem SQL Server 2014 powinna ona mieć wartość 120. Zmianę wykonuje się poleceniem ALTER DATABASE, na przykład: ALTER DATABASE NazwaBazy SET COMPATIBILITY_LEVEL = 120;. Polecenie wymaga odpowiednich uprawnień i dotyczy wyłącznie wskazanej bazy.

Wpływ poziomu 120 na optymalizację zapytań

Jedną z istotnych zmian powiązanych z poziomem 120 jest użycie nowego estymatora liczności, określanego jako New Cardinality Estimator. Estymator przewiduje liczbę wierszy, które zwrócą poszczególne operatory planu wykonania. Na podstawie tych przewidywań optymalizator wybiera między innymi kolejność złączeń, sposób dostępu do indeksów oraz użycie złączenia zagnieżdżonego, haszującego albo sortującego.

Przejście z wcześniejszego poziomu zgodności może więc zmienić plany wykonania tych samych zapytań. W przypadku jednych instrukcji plan będzie korzystniejszy, a w przypadku innych estymacja liczby wierszy może być mniej trafna i doprowadzić do większego użycia pamięci, wyboru nieodpowiedniego operatora albo skanowania zamiast wyszukiwania indeksowego. Sama zmiana poziomu nie gwarantuje poprawy wydajności. Powinna być sprawdzana na rzeczywistych zapytaniach, statystykach, indeksach i rozkładzie danych.

Zmiana zgodności a istniejąca baza danych

Podczas aktualizacji bazy do SQL Server 2014 jej dotychczasowy poziom zgodności nie musi zostać automatycznie zmieniony na 120. Pozwala to zachować wcześniejsze zachowanie aplikacji do czasu przeprowadzenia testów. Baza może korzystać z nowszego silnika, jednocześnie zachowując starszy poziom zgodności, o ile dana kombinacja wersji jest obsługiwana przez SQL Server.

Przed zmianą warto zapisać aktualną wartość compatibility_level, wykonać kopię zapasową i przetestować najważniejsze procedury składowane, widoki, funkcje oraz zapytania aplikacji. Należy zweryfikować zarówno poprawność wyników, jak i plany wykonania oraz czasy realizacji. Szczególną uwagę trzeba zwrócić na zapytania wykorzystujące wiele tabel, nierównomierny rozkład wartości, filtry na kolumnach o słabej selektywności oraz operacje wymagające dużych sortowań lub agregacji.

Sprawdzanie ustawienia i analiza planu wykonania

Aktualny poziom zgodności można odczytać poleceniem SELECT name, compatibility_level FROM sys.databases;. Analizując problem po zmianie wartości na 120, należy porównać plan wykonania przed i po zmianie oraz sprawdzić różnice między estymowaną i rzeczywistą liczbą wierszy. Duża rozbieżność może wskazywać na nieaktualne statystyki, nietypową korelację kolumn albo zmianę założeń estymatora, a nie na uszkodzenie samej bazy.

W SQL Server 2014 poziom zgodności jest elementem diagnostyki wydajnościowej, szczególnie gdy po migracji pojawia się wolniejsze zapytanie, większe zużycie procesora lub pamięci. Ocenę należy oprzeć na powtarzalnych pomiarach, planach rzeczywistego wykonania i danych z badanego środowiska. W razie regresji można czasowo pozostawić wcześniejszy poziom zgodności dla konkretnej bazy, a następnie osobno poprawić zapytanie, statystyki lub indeksy i ponowić testy. Ustawienie 120 nie zastępuje strojenia kodu Transact-SQL ani prawidłowego utrzymania bazy danych.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę