Como investigar os avisos de concessão de memória?

Jan 01 2021

Vi este aviso de consulta no cache do plano

<Warnings>
     <MemoryGrantWarning GrantWarningKind="Excessive Grant" RequestedMemory="2751552" GrantedMemory="2751552" MaxUsedMemory="768" />
</Warnings>

RequestedMemory representa bytes ou kilobytes?

Como você soluciona o que causou esse aviso?

Respostas

1 J.D. Jan 01 2021 at 08:53

Isso geralmente é resultante (embora eu acredite que outras coisas também podem causar isso) de problemas de estimativa de cardinalidade . Você deve olhar para o Plano de Execução Real e ver se há estimativas erradas, comparando o Número Estimado de Linhas total com o Número Real de Linhas . Se você atualizar sua pergunta com o Plano de Execução (você pode carregá-lo em Colar o Plano e vinculá-lo à sua pergunta), podemos fornecer uma orientação melhor sobre a origem do problema de concessão de memória excessiva.