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

Uaktualnianie modelu zgodności

Termin Definicja
Uaktualnianie modelu zgodności

Uaktualnianie modelu zgodności zmienia zachowanie optymalizatora bazy na charakterystyczne dla nowszej wersji silnika.

Na czym polega zmiana modelu zgodności w SQL Server

Uaktualnianie modelu zgodności w SQL Server polega na zmianie właściwości bazy danych określanej jako compatibility_level. Ustawienie to wskazuje, z jakim poziomem zgodności ma działać dana baza w zakresie zachowania języka Transact-SQL oraz optymalizacji zapytań. Nie jest tożsamożsame z aktualizacją plików bazy do nowszego formatu ani z wymianą wersji zainstalowanego silnika Database Engine. Poziom zgodności jest ustawieniem przypisanym do konkretnej bazy, dlatego dwie bazy działające na tej samej instancji SQL Server mogą mieć różne poziomy.

Przykładowe wartości odpowiadają wersjom SQL Server: poziom 150 jest związany z SQL Server 2019, 160 z SQL Server 2022, a 170 z SQL Server 2025. Dostępna wartość zależy od wersji silnika. Baza przywrócona lub dołączona do nowszej instancji zwykle zachowuje dotychczasowy poziom zgodności, jeżeli jest on nadal obsługiwany. Samo przeniesienie bazy na nowszą wersję SQL Server nie oznacza więc automatycznego włączenia wszystkich zmian optymalizatora.

Wpływ poziomu zgodności na optymalizator zapytań

Najważniejszym skutkiem podniesienia poziomu zgodności jest możliwość użycia nowszych reguł optymalizatora zapytań. SQL Server analizuje instrukcję, szacuje między innymi liczbę wierszy spełniających warunki i wybiera plan wykonania, na przykład kolejność łączenia tabel, rodzaj operatora dostępu do indeksu albo sposób agregowania danych. Zmiana modelu zgodności może zmienić te decyzje, nawet jeżeli tekst zapytania i struktura tabel pozostają bez zmian.

Od poziomu 130 poprawki i funkcje wpływające na plany zapytań są zasadniczo wiązane z nowszym poziomem zgodności, aby ograniczyć ryzyko niekontrolowanych zmian wydajności podczas aktualizacji silnika. Dotyczy to również zmian w estymatorze kardynalności oraz wybranych poprawek optymalizatora. W efekcie podniesienie poziomu może przyspieszyć część zapytań, ale w określonych obciążeniach może także spowodować regresję, jeżeli nowy plan okaże się mniej korzystny dla konkretnego rozkładu danych.

Sprawdzenie ustawienia przed aktualizacją

Bieżący poziom zgodności można odczytać z widoku systemowego sys.databases. Przykładowe zapytanie w Transact-SQL ma postać:

SELECT name, compatibility_level FROM sys.databases;

Wartość należy interpretować razem z wersją silnika, którą można sprawdzić za pomocą SERVERPROPERTY('ProductVersion'). Sam numer poziomu nie opisuje wszystkich właściwości instancji i nie zapewnia, że każda funkcja dostępna w nowszym SQL Server będzie działać na starszym poziomie. Poziom zgodności dotyczy przede wszystkim zachowania Transact-SQL oraz optymalizacji, natomiast usunięte obiekty systemowe i niektóre zmiany strukturalne nie są przez niego przywracane.

Zmianę wykonuje się poleceniem ALTER DATABASE, na przykład: ALTER DATABASE NazwaBazy SET COMPATIBILITY_LEVEL = 160;. Do wykonania takiej operacji potrzebne jest uprawnienie ALTER do bazy. Po zmianie procedury składowane są automatycznie rekompilowane, ponieważ korzystają z poziomu zgodności bazy, w której zostały zdefiniowane. Przed wykonaniem polecenia trzeba ustalić, czy wskazany poziom jest obsługiwany przez konkretną wersję SQL Server.

Kontrola planów po podniesieniu poziomu

Uaktualnienie modelu zgodności powinno być traktowane jako zmiana wymagająca testu, a nie jako czysto administracyjne przełączenie. Należy porównać najważniejsze zapytania przed zmianą i po niej, zwracając uwagę na czas wykonania, liczbę odczytów logicznych, zużycie procesora, oczekiwania oraz wybrany plan wykonania. Szczególne znaczenie mają zapytania raportowe, procedury składowane z wieloma łączeniami, operacje korzystające z indeksów oraz instrukcje wykonywane bardzo często.

Do obserwacji zmian można wykorzystać Query Store, który przechowuje informacje o zapytaniach, planach i statystykach ich wykonania. Jeżeli po podniesieniu poziomu pojawi się regresja, trzeba ustalić, czy wynika ona ze zmiany planu, estymacji liczby wierszy, statystyk lub danych wejściowych. Obniżenie poziomu zgodności jest możliwą procedurą wycofania ustawienia, ale nie zastępuje analizy przyczyny. Dopiero po sprawdzeniu planów, obciążenia i poprawności wyników można ocenić, czy nowy model zgodności działa prawidłowo dla konkretnej bazy.

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