Objawy
Po zainstalowaniu dodatku Service Pack 1 (SP1) dla programu SQL Server 2014, SQL Server 2012 z dodatkiem SP3 lub programu SQL Server 2016 do momentu ponownego uruchomienia serwera występuje niska wydajność zapytań i użycie procesora w trybie podwyższonych uprawnień (jądra). Może również wystąpić duża liczba PAGELATCH_* oczekiwań.
Rozwiązanie
Ten problem został rozwiązany w następujących aktualizacjach zbiorczych programu SQL Server:
- Aktualizacja zbiorcza 2 dla programu SQL Server 2016
- Aktualizacja zbiorcza 5 dla programu SQL Server 2012 z dodatkiem Service Pack 3 (SP3)
- Aktualizacja zbiorcza 7 dla programu SQL Server 2014 z dodatkiem SP1
Zalecenie: zainstalowanie najnowszej aktualizacji zbiorczej dla programu SQL Server
Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji skumulowanej. Zalecamy pobranie i zainstalowanie najnowszych aktualizacji zbiorczych dla programu SQL Server:
- Najnowsza aktualizacja zbiorcza dla programu SQL Server 2016
- Najnowsza aktualizacja zbiorcza dla programu SQL Server 2012 z dodatkiem SP3
- Najnowsza aktualizacja zbiorcza dla programu SQL Server 2014 z dodatkiem SP1
Przyczyna
W programie SQL Server jest używana dynamiczna logika podsuwania i obniżania poziomu (super/podzatrzask). Poprawia to wydajność i skalowalność programu SQL Server, śledząc liczbę zatrzasków na zatrzasku oraz czas potrzebny na uzyskanie tego samego zatrzasku, jeśli nie ma rywalizacji o zatrzask. Następnie na podstawie tego modelu promowane są kwalifikujące się zatrzaski (superzatrzaski). Gdy jest wiele zmian (wstawianie/aktualizacje/usuwanie) na stercie lub BTree (HoBT), zatrzaski związane z HoBT mogą zostać podniesione do statusu super zatrzasku. Obniżenie poziomu nie następuje jednak automatycznie. Więcej o super-zatrzaskiwaniu można przeczytać w tym artykule.
Jeśli te HoBT zostaną później cofnięte, zwolniony HoBT wróci do globalnej pamięci podręcznej w celu ponownego użycia. Kiedy ten HOBT jest ponownie używany, ponownie wykorzystuje poprzednio promowany zatrzask, nawet jeśli nie ma rywalizacji na HoBT. Powoduje to dodatkowe obciążenie procesora. Takie zachowanie zwiększa użycie procesora w trybie uprzywilejowanym (jądra) programu SQL Server do momentu ponownego uruchomienia serwera. To zwiększenie zwykle dodaje nie więcej niż kilka mikrosekund przy każdym wykonaniu. Możesz również zaobserwować dużą liczbę PAGELATCH_* oczekiwania z powodu tych rozszerzonych super-zatrzasków w HoBT.
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.