Sintomas
Considere o seguinte cenário:
-
Você tem uma tabela que tem índices columnstore clusterizados e a tabela tem muitas colunas (em centenas).
-
Os dados (tipo de dados) dessas colunas são dados altamente compactados, como varchar.
-
Você executa uma instrução Select nessa tabela para selecionar um subconjunto grande ou todas as colunas desta tabela.
-
A instrução Select tem uma cláusula Where que limita a saída dela a um pouco de linhas (a consulta é altamente seletiva).
Nesse cenário, você pode 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 uma redução no desempenho e perda de produtividade.
-
Você pode ver uma alta utilização intermitente da CPU.
-
Se você consultar Sys.dm_os_ring_buffers e exibir as entradas do tipo SchedulerMonitor , você encontrará mensagens intermitentes de "não-rendimento do Agendador" registradas durante o tempo de execução dessa consulta.
-
Você pode receber um erro de Agendador sem concessão no log de erros e um arquivo de despejo de memória de sintoma pode ser gerado.
Resolução
O problema foi corrigido primeiro 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 incluídas na atualização cumulativa anterior. Recomendamos que você baixe e instale as atualizações cumulativas mais recentes do SQL Server:
Informações adicionais
Detalhes da correçãoOs trabalhadores que processam os segmentos de coluna (descompactando-os e verificando-os em busca de linhas qualificadas) usados para "produzir" o uso da CPU para outros trabalhadores/execuções de consulta simultâneas quando um determinado número limite de linhas era de saída. Quando a cláusula Where era altamente seletiva para produzir poucas linhas, os trabalhadores que processam essa consulta processaram uma grande quantidade de segmentos não compactados (porque há poucas linhas qualificadas) antes de terem a CPU da maneira cooperativa para que outros trabalhadores processem sua carga de trabalho. Isso levou a um uso irregular da CPU e degradação da produtividade para a carga de trabalho simultânea. A correção otimiza e aprimora o algoritmo de compartilhamento de CPU para essas consultas de columnstore.
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.