Symptomy
Załóżmy, że w programie Microsoft SQL Server 2008 R2 lub Microsoft SQL Server 2012 na komputerze z wieloma procesorami jest wysyłana kwerenda. W zapytaniu jest używana wskazówka NOLOCK. W takiej sytuacji obciążenie procesora jest wysokie.UwagaTen problem występuje w większości przypadków, jeśli na komputerze jest zainstalowany 16 lub więcej procesorów CPU.
Przyczyna
Ten problem występuje, ponieważ algorytm spinlock Backoff nie jest wydajny.
Rozwiązanie
Informacje o aktualizacji zbiorczej
Zbiorcza aktualizacja 2 dla programu SQL Server 2012 z dodatkiem SP1
Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 2. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2012 z dodatkiem SP1, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2790947 Pakiet aktualizacji zbiorczej 2 dla programu SQL Server 2012 z dodatkiem Service Pack 1Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniej wersji poprawki SQL Server 2012 SP1. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2772858 Kompilacje programu SQL Server 2012 wydane po opublikowaniu dodatku Service Pack 1 dla programu SQL Server 2012
Zbiorcza aktualizacja 5 dla programu SQL Server 2012
Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 5. Aby uzyskać więcej informacji na temat uzyskiwania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2012, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2777772 Pakiet aktualizacji zbiorczej 5 dla programu SQL Server 2012Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniej wersji poprawki SQL Server 2012. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2692828 Kompilacje programu SQL Server 2012 wydane po wydaniu programu SQL Server 2012
SQL Server 2008 R2 z dodatkiem Service Pack 2
Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 3. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji dla programu SQL Server 2008 R2 z dodatkiem Service Pack 2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2754552 Pakiet aktualizacji zbiorczej 3 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 2Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które uwzględniono w poprzedniej wersji poprawki do programu SQL Server 2008 R2 z dodatkiem Service Pack 2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2730301 Kompilacja programu SQL Server 2008 R2 opublikowanych po wydaniu programu SQL Server 2008 R2 z dodatkiem Service Pack 2
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".
Obejście
Aby obejść ten problem, użyj jednej z następujących metod:
-
Zmniejsz rozmiar kolumny dużych obiektów binarnych.
-
Usuń wskazówkę NOLOCK z zapytania.
-
Zmniejsz liczbę procesorów używanych przez program SQL Server.