Sintomas
Quando ocorrem demasiadas inserções simultâneas no mesmo registo hash ou a cache do plano ad hoc SQL Server atinge o limite de entrada de 160.036, ocorre uma contenção severa no SOS_CACHESTORE spinlock. Nesta situação, ocorre uma utilização elevada da CPU no Microsoft SQL Server.
Causa
O problema ocorre quando a cache do plano SQL Server atinge o limite de entrada e os planos com baixo custo têm de ser expulsos para inserir novos planos. Isto causa uma forte contenção para o spinlock SOS_CACHESTORE que fornece sincronização para os registos de tabela hash da cache do plano SQL Server.
Resolução
Informações de Atualização Cumulativa
O problema foi corrigido pela primeira vez na seguinte atualização cumulativa de SQL Server.
Cada nova atualização cumulativa para SQL Server contém todas as correções e todas as correções de segurança incluídas na atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
Mais Informações
A cache do plano tem dois limites: o tamanho total e o número total de todos os planos. Os limites de tamanho e contagem de entradas são explicados no seguinte documento técnico:
O número máximo de entradas que uma cache de plano pode conter é quatro vezes a contagem de registos. Pode verificar estas informações ao executar as seguintes consultas:
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' )
Por exemplo, em sistemas de 64 bits, o número de registos da cache do plano de SQL Server é de 40 009. Por conseguinte, o número máximo de entradas que podem caber dentro da cache do plano SQL Server é de 160 036.
Se tiver uma carga de trabalho que utiliza consultas ad hoc diferentes, este limite pode tornar-se um estrangulamento. A alteração efetuada por esta correção resolve esta situação. Depois de instalar esta correção e ativar a alteração com o sinalizador de rastreio de arranque "-T 174", a contagem de registos é aumentada para 160 001 em sistemas de 64 bits. Em seguida, a cache do plano pode conter um máximo de 640 004 planos.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".