Sintomas
Considere o seguinte cenário:
-
Você tem uma tabela que tem índices de loja de colunas agrupados nele, e a tabela tem muitas colunas (em centenas).
-
Os dados (tipo de dados) destas colunas são dados altamente compressíveis, como varchar.
-
Executar uma declaração SELECT contra esta tabela para selecionar um subconjunto grande ou todas as colunas desta tabela.
-
A sua declaração selecionada tem uma cláusula WHERE que limita a sua saída a poucas linhas (a consulta é altamente seletiva).
Neste cenário, poderá encontrar qualquer um dos seguintes sintomas:
-
A carga de trabalho simultânea (outras consultas que são executadas ao mesmo tempo no servidor como esta consulta), pode encontrar diminuição do desempenho e perda de produção.
-
Pode ver uma utilização de CPU elevada intermitente.
-
Se consultar sys.dm_os_ring_buffers e ver as entradas do tipo SchedulerMonitor, encontra mensagens intermitentes de "programador não-retor o rendimento" registadas durante o período de execução desta consulta.
-
Pode receber um erro de agendamento não-recadorante no registo de erros e pode ser gerado um ficheiro de despejo de memória de sintomas.
Resolução
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. Recomendamos que descarregue e instale as últimas atualizações cumulativas para o SQL Server:
Mais Informações
Corrigir detalhesOs trabalhadores que processam os segmentos das colunas (descomprimindo-os e digitalizando-os para linhas elegíveis) usavam para "ceder" o uso do CPU a outros trabalhadores/execuções de consultas simultâneas quando um determinado número de linhas limiar era a produção. Quando a cláusula WHERE foi altamente seletiva para produzir poucas filas, os trabalhadores que processam esta consulta processaram segmentos não reprimidos e um grande número de segmentos (porque muito poucas filas se qualificam) antes de abdicarem da CPU de forma cooperativa para que outros trabalhadores processem a sua carga de trabalho. Isto levou a uma utilização irregular da CPU e à degradação da produção para carga de trabalho simultânea. A correção otimiza e melhora o algoritmo de partilha de CPU para tais consultas de loja de colunas.
Referências
Conheça a terminologia que a Microsoft utiliza para descrever atualizações de software.