MS-SQL compatibility level

MS-SQL compatibility level
WP
  • Rejestracja:około 7 lat
  • Ostatnio:około miesiąc
  • Postów:145
0

Witam.
Mam pytanie dotyczące poziomu kompatybilności baz MS-SQLa.
Mam bazę założoną np. w sql 2014. Robię jej kopię i odzyskuję ją na sql 2022. Poziom kompatybilności pozostaje mi na sql 2014.
Co daje mi podwyższenie poziomu do sql 2022, czyli takiego na którym baza zostaje odzyskana?
Czy poprawi mi się wydajność zapytań, czy wręcz przeciwnie?
Czy na bazie o obniżonym poziomie kompatybilności będę mógł używać funkcji, które są dodane na nowym sql'u?
Po co w ogóle są te poziomy?

YA
  • Rejestracja:około 10 lat
  • Ostatnio:4 minuty
  • Postów:2372
0

Poziomy zgodności określają zestaw dostępnych funkcjonalności. Dzięki temu, po przeniesieniu bazy na nową wersję silnika, masz kompatybilność wsteczną.
Nie musisz się martwić, że funkcjonalność z której korzystasz nagle "zniknęła", bądź do akcji wkroczył nowy "killer feature" optymalizatora i Twoje zapytania nagle działają dużo wolniej i jest tragedia na produkcji, bo "killer feature" ma błąd. Zmieniając poziomy zgodności masz kontrolę nad dynamiką zmian i możesz zaplanować przechodzenie na nowsze funkcjonalności.

Nie wiem czy MS ma jakieś zbiorcze porównanie funkcjonalność vs wersja. Jeśli nie, to pozostaje przeglądać oficjalną dokumentację pod kątem "Co nowego" w danej wersji, np. 2016: https://learn.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2016?view=sql-server-2016

edytowany 1x, ostatnio: yarel
WP
Czyli podnosząc poziom zgodności nie zyskuję większej wydajności, tylko mogę stosować nowe funkcje, których nie ma w starszej wersji? A jeżeli chodzi o wydajność zapytań poziom zgodności nie ma nic do rzeczy? Poziom nie ma wpływu na wydajność?
YA
Może mieć wpływ na wydajność (na plus, albo na minus). Dlatego, że np. funkcjonalność optymalizator ulega zmianie pomiędzy wersjami, więc taki "nowszy" optymalizator może produkować inne plany wykonania, niż te które masz obecnie. Czy będą lepsze/gorsze? To trzeba przetestować.
WP
Czyli jak rozumiem każde większe zapytanie należałoby przetestować na nowszej wersji SQL'a i ewentualnie je dostosować do optymalnej wydajności. A jeżeli nie zmienimy poziomu zgodności to na nowszej wersji SQL'a wydajność dotychczasowych zapytań nie powinna się zmienić?
YA
Tak, powinieneś mieć podobne zachowanie. Nowe funkcjonalności nie powinny się uruchamiać i tym samym powodować zmian w zachowaniu (ale to software, więc może mieć błędy :) ). Nie sprawdzisz, nie będziesz pewien.
LI
  • Rejestracja:ponad 8 lat
  • Ostatnio:3 miesiące
  • Postów:87
1

Może nie bezpośrednie porównanie, ale na dole jest pokazane co się mięzy poziomami różni.
https://learn.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-ver16&redirectedfrom=MSDN

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.