Sintomas
Quando muitas inserções simultâneas ocorrem no mesmo balde de haxixe, ou a cache do plano do servidor ad hoc SQL atinge o seu limite de entrada de 160.036, ocorre uma forte contenção no SOS_CACHESTORE spinlock. Nesta situação, ocorre uma alta utilização do CPU no Microsoft SQL Server.
Causa
O problema ocorre quando a cache do plano SQL Server atinge o seu limite de entrada, e os planos que têm baixo custo devem ser despejados para inserir novos planos. Isto causa uma forte contenção para o SOS_CACHESTORE spinlock que proporciona sincronização para os baldes de mesa de haxixe da cache do plano sql server.
Resolução
Informação de atualização cumulativa
O problema foi corrigido pela primeira vez na seguinte atualização cumulativa do SQL Server.
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do 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 dimensão e contagem de entradas são explicados no seguinte livro branco:
O número máximo de entradas que uma cache de plano pode conter é quatro vezes superior à contagem de baldes. Pode verificar estas informações executando 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 baldes para a cache do plano SQL Server é de 40.009. Portanto, 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 utilize diferentes consultas ad hoc, este limite pode tornar-se um estrangulamento. A mudança que é feita por este hotfix aborda esta situação. Depois de instalar este hotfix e ativar a alteração utilizando a bandeira de traço de arranque "-T 174", a contagem de baldes é aumentada para 160.001 em sistemas de 64 bits. A cache do plano é então capaz de manter 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".