Plany zapytań zmieniają wydajność Gorzej w SQL Server 2014

10

Niedawno zaktualizowaliśmy nasz serwer z SQL Server 2008R2 do SQL Server 2014. Mamy zapytanie, które działało dobrze w 2008R2, ale teraz w 2014 działa bardzo dużo wolniej i ma zły plan wykonania.

Zrobiłem kilka testów ...

  1. Przełącz DB 2014 z powrotem do trybu zgodności 2008/2012.
  2. Przetestuj zapytanie za pomocą paginacji.

Oba spowodowały, że zapytanie działało tak samo, jak miało to miejsce i szybko jak SQL Server 2008R2.

Dlaczego plan jest tak zły, a kwerenda działa tak długo w programie SQL Server 2014?

Szacowany / Rzeczywisty

Ten obraz pokazuje 2 zapytania, jedno z użyciem numeru początkowego tak, jak działało w 2008R2, a drugie to poprawka z paginacją. Oba działały w 2014 r., Oba bardzo się różniły, ale w 2008 r. Widzimy takie same wyniki, jak w 2014 r.

Jeff
źródło

Odpowiedzi:

7

To nie jest problem, jest z założenia i jest uważane za poprawę wydajności.

Jeśli Twoje zapytania nie działają zgodnie z oczekiwaniami, musisz rozwiązać ten problem w kodzie bazy danych / aplikacji.

Możesz wymusić stary estymator karnacji za pomocą flagi śledzenia 9481 na poziomie serwera, sesji lub zapytania (za pomocą OPTION (QUERYTRACEON 9481)). Wymusi to, bez względu na poziom kompatybilności bazy danych.

Zespół CSS zamieścił tu również mnóstwo informacji .

Bardziej szczegółowy post na temat Cardanility Estimator i zmian wokół tego procesu w SQL Server 2014, zawiera przykład.

Paul White 9
źródło
To brzmi jak kiepska wymówka, że ​​coś poszło nie tak
dvdmn