Compatibility Level po migracji — dlaczego nie warto zmieniać go od razu
Przeniesienie bazy na SQL Server 2022 nie oznacza, że od razu trzeba ustawić COMPATIBILITY_LEVEL = 160.
To są dwa osobne kroki i warto je tak traktować.
Najpierw sprawdź aktualny poziom
| |
Baza może działać na SQL Server 2022 i nadal mieć Compatibility Level 130. Dzięki temu migrację silnika można oddzielić od zmian zachowania optymalizatora.
Dlaczego to ma znaczenie?
Zmiana Compatibility Level może wpływać między innymi na:
- Cardinality Estimator,
- scalar UDF inlining,
- table variable deferred compilation,
- batch mode on rowstore,
- memory grant feedback,
- Parameter Sensitive Plan optimization.
Nie każda zmiana spowoduje regresję, ale każda powinna być obserwowana.
Query Store przed zmianą
| |
Przed zmianą zbierz baseline: najdroższe zapytania, CPU, logical reads, czasy wykonania, waity i najważniejsze plany.
Zmiana Compatibility Level
| |
Po zmianie nie oceniaj systemu tylko po tym, że aplikacja się uruchomiła. Obserwuj zachowanie pod realnym obciążeniem.
Plan wycofania
| |
Zmiana jest odwracalna, ale rollback nie powinien być pierwszą reakcją. Najpierw ustal, czy problem dotyczy konkretnego zapytania.
Podsumowanie
Migracja i Compatibility Level to dwa różne etapy.
Spokojny DBA najpierw przenosi system, stabilizuje go, zbiera baseline, a dopiero potem świadomie włącza nowe zachowania optymalizatora.