Symptomy
W przypadku użycia nowego wystąpienia Microsoft SQL Server 2016 (lub 2017) lub wystąpienia SQL Server 2016 (lub 2017), które zostało uaktualnione z wcześniejszej wersji SQL Server, występują problemy z wydajnością z powodu dużego użycia procesora. Ponadto w przypadku zapytania dotyczącego sys.dm_os_spinlock_stats tabeli można zauważyć wysoką wartość w kolumnie pokrętła dla wierszySECURITY_CACHE (Security Cache) i CMED_HASH_SET (Metadata Cache) (w porównaniu z innymi wierszami w tabeli). Na przykład można zauważyć następujące wartości.
Przyczyna
Ten problem występuje z powodu dużej rywalizacji spin lock w bardzo równoczesnym systemie. W tych systemach operacyjnych wiele wątków procesora konkuruje o zasoby i obraca się przez dłuższy czas, podczas gdy okresowo pracują w pętli w celu określenia, czy zasób jest dostępny, a nie natychmiast dający wydajność. Gdy wiele wątków procesora ciągle się obraca ( w pętli ) dla zasobu, a nie daje, powoduje to wysokie użycie procesora i problemy z wydajnością.
Rozwiązanie
Ten problem został rozwiązany w następujących aktualizacjach zbiorczych dla SQL Server:
Uwaga 16. Po zastosowaniu aktualizacji zbiorczej 2 (CU2) SQL Server 2016 nazwy SECURITY_CACHE i CMED_HASH_SET zostaną zmienione odpowiednio na LOCK_RW_SECURITY_CACHE i LOCK_RW_CMED_HASH_SET. Po zastosowaniu funkcji CU2 wartości są wyświetlane w następujący sposób.
Każda nowa aktualizacja zbiorcza dla SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla SQL Server:
Stan
Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".
Informacje
Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.
Oficjalny dokument Diagnozowanie i rozwiązywanie rywalizacji spinlock na SQL Server omawia kwestie i rozwiązania, które są związane z rywalizacji spinlock w szczegółach.