Quando o SQL Server avisa sobre uma concessão excessiva de memória?


18

Quais são as condições que produzem um aviso do plano de execução "Concessão excessiva" ?

A concessão de memória de consulta detectou "ExcessiveGrant", o que pode afetar a confiabilidade. Tamanho da concessão: 5128 KB inicial, 5128 KB final, usado 16 KB.

SSMS

Plano SSMS

Propriedades do SSMS

Plan Explorer

Plan Explorer

Showplan xml

<Warnings>
    <MemoryGrantWarning GrantWarningKind="Excessive Grant"
        RequestedMemory="5128" GrantedMemory="5128" MaxUsedMemory="16" />
</Warnings>

Respostas:


19

Para produzir este aviso:

  1. A memória máxima usada deve ser menor que 5% da memória concedida; E
  2. A consulta deve usar o semáforo de recursos regular (não pequeno)

Para usar o semáforo de recurso regular, a consulta deve:

  • Ter concedido memória sobre 5MB (5120 KB, 640 x 8 KB páginas); OU
  • Tenha um custo total estimado de mais de 3 unidades e não seja um plano trivial

Requisitos de versão do servidor :

  • SQL Server 2014 SP2 (12.0.5000) ou posterior
  • SQL Server 2016 SP1 (13.0.4001) ou posterior
  • SQL Server 2017 RTM (14.0.1000) ou posterior
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.