KB3162589 — POPRAWKA: Zmniejszona wydajność SQL Server w przypadku podwyższonego użycia procesora w trybie uprzywilejowanym i dużej liczby oczekujących na zatrzaśnięcie strony

Dotyczy
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Web - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Service Pack 3 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Standard SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

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:

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:

      

        
      

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”.