Ten problem występuje w naszym środowisku produkcyjnym.
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) - Enterprise Edition (64-bit) w systemie Windows NT 6.1 (kompilacja 7601: Service Pack 1).
SQL Server usuwa wszystkie (prawie 100%) starych planów wykonania i odtwarza je codziennie w ciągu jednej nocy (od 23:00 do 8:00). Działo się tak nawet wtedy, gdy „statystyki automatycznej aktualizacji” były wyłączone. Włączyliśmy „statystyki automatycznych aktualizacji” na ostatnie 2-3 tygodnie. Ale wciąż się dzieje.
Naprawdę nie wiemy, co powoduje to ponowne generowanie planów, ale jesteśmy pewni, że nie robimy tego ręcznie.
Jedyne, co naprawdę pokrywa się z harmonogramem regeneracji planów, to zadanie polegające na utrzymaniu bazy danych: codzienna reorganizacja indeksu (gdy fragmentacja wynosi 5-30%) i codzienna przebudowa indeksu (gdy fragmentacja wynosi ponad 30% ) praca. Zwykle to codzienne zadanie konserwacyjne przeprowadza tylko reorganizację (ponieważ fragmentacja indeksu nigdy nie przekracza 30% dziennie).
Wpływ:
Te nowo utworzone plany powodują, że niektóre wywołania / zapytania UDF (które są wywoływane ze strony interfejsu użytkownika / stron internetowych) zajmują znacznie więcej czasu (minuty w przeciwieństwie do mniej niż 1 sekundy), więc sesje po prostu się gromadzą, biorąc procesor blisko 90% .
Problem znika w momencie, gdy zablokowane sesje są usuwane (po stronie bazy danych) i 1), gdy wszystkie odpowiednie plany wykonania są czyszczone ręcznie (w przypadku zapytań) lub 2), gdy zmienione są funkcje UDF (w przypadku funkcji). Wszelkie nowe plany tworzone przez SQL Server od tego momentu działają idealnie przez cały dzień, dopóki następnego dnia nie będzie mieć tego samego problemu. Ponadto, to zachowanie nie jest w 100% spójne, tak naprawdę nie widzimy go każdego ranka. Ale były okresy, w których obserwowaliśmy to konsekwentnie przez 4-5 dni z rzędu.
Problem zdarza się w poranki biznesowe, wtedy wydaje się, że dostęp do interfejsu użytkownika / stron internetowych jest bardziej intensywny.
Czy ktoś ma pojęcie, co to powoduje i jak rozwiązać ten problem? Każda pomoc będzie mile widziana.