Sintomas
Depois de instalar o SQL Server 2014 Service Pack 1 (SP1), SQL Server 2012 SP3 ou SQL Server 2016, experimenta um desempenho de consulta lenta e uma utilização do CPU do modo de sigilo elevado (kernel) até que o servidor seja reiniciado. Você também pode ver um grande volume de esperas de PAGELATCH_*.
Resolução
O problema foi corrigido nas seguintes atualizações cumulativas 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. Recomendamos que descarregue e instale as últimas atualizações cumulativas para o SQL Server:
Causa
O SQL Server utiliza uma lógica dinâmica de promoção e despromoção de trinco (super/subsiste). Isto melhora o desempenho e escalabilidade do SQL Server mantendo o número de adquirentes num trinco, e sobre quanto tempo deve demorar a adquirir o mesmo trinco se não existir qualquer contenção de trinco. Em seguida, os fechos elegíveis são promovidos (super-trinco) com base neste modelo. Quando há muitas alterações (inserções/atualizações/eliminações) num Heap ou BTree (HoBT), os fechos associados ao HoBT podem ser promovidos ao estado de super trinco. No entanto, a despromoção não ocorre automaticamente. Pode ler mais sobre super/sub-travamento neste artigo. Se estes HoBTs forem posteriormente transações, o HoBT libertado volta a uma cache global para reutilização. Quando o HOBT é reutilizado, reutiliza o trinco anteriormente promovido, mesmo quando não há qualquer discórdia sobre o HoBT. Isto adiciona a sobrecarga do CPU. Este comportamento aumenta o uso do CPU do modo PRIVILEGIADO (kernel) do SQL Server até que o servidor seja reiniciado. Este aumento normalmente não adiciona mais do que vários microsegundos a cada execução. Você também pode ver um grande volume de esperas de PAGELATCH_* por causa destes super-fechos estendidos em HoBTs.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".