Symptomy
Gdy zbyt wiele równoczesnych wstawień występuje w tym samym zasobniku skrótu lub doraźna pamięć podręczna planu SQL Server osiąga limit wprowadzania 160 036, występuje poważna rywalizacja o SOS_CACHESTORE spinlock. W takiej sytuacji duże obciążenie procesora występuje w usłudze Microsoft SQL Server.
Przyczyna
Ten problem występuje, gdy pamięć podręczna planu SQL Server osiąga limit wprowadzania, a plany o niskich kosztach muszą zostać eksmitowane, aby wstawić nowe plany. Powoduje to duże rywalizacje o spinlock SOS_CACHESTORE, który zapewnia synchronizację dla zasobników tabeli skrótów w pamięci podręcznej planu SQL Server.
Rozwiązanie
Informacje o aktualizacji zbiorczej
Ten problem został po raz pierwszy rozwiązany w następującej aktualizacji zbiorczej SQL Server.
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:
Więcej informacji
Pamięć podręczna planu ma dwa limity: całkowity rozmiar i całkowitą liczbę wszystkich planów. Limity rozmiaru i liczby wpisów wyjaśniono w poniższym białym dokumencie:
Wewnętrzne planowanie pamięci podręcznej
Maksymalna liczba wpisów, które można przechowywać w pamięci podręcznej planu, jest czterokrotna. Możesz zweryfikować te informacje, uruchamiając następujące zapytania:
select name, type, buckets_count
from sys.dm_os_memory_cache_hash_tables
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
select name, type, pages_kb, entries_count
from sys.dm_os_memory_cache_counters
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
Na przykład w systemach 64-bitowych liczba zasobników pamięci podręcznej planu SQL Server wynosi 40 009. Dlatego maksymalna liczba wpisów mieszczących się w pamięci podręcznej planu SQL Server wynosi 160 036.
Jeśli masz obciążenie pracą, które korzysta z różnych zapytań ad hoc, ten limit może stać się wąskim gardłem. Zmiana wprowadzona przez tę poprawkę rozwiązuje tę sytuację. Po zainstalowaniu tej poprawki i włączeniu zmiany przy użyciu flagi śledzenia uruchamiania "-T 174" liczba zasobników zostanie zwiększona do 160 001 w systemach 64-bitowych. Pamięć podręczna planu może zawierać maksymalnie 640 004 planów.
Stan
Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".