¿Cuándo advierte SQL Server sobre una concesión de memoria excesiva?

18

¿Cuáles son las condiciones que producen una advertencia de plan de ejecución de "concesión excesiva" ?

La concesión de memoria de consulta detectó "ExcessiveGrant", lo que puede afectar la confiabilidad. Tamaño de la concesión: 5128 KB iniciales, 5128 KB finales, 16 KB utilizadas.

SSMS

Plan SSMS

Propiedades SSMS

Plan Explorer

Plan Explorer

Showplan xml

<Warnings>
    <MemoryGrantWarning GrantWarningKind="Excessive Grant"
        RequestedMemory="5128" GrantedMemory="5128" MaxUsedMemory="16" />
</Warnings>
Paul White reinstala a Monica
fuente

Respuestas:

19

Para producir esta advertencia:

  1. La memoria máxima utilizada debe ser inferior al 5% de la memoria otorgada; Y
  2. La consulta debe usar el semáforo de recursos regular (no pequeño)

Para usar el semáforo de recursos regular, la consulta debe:

  • Han otorgado memoria de más de 5 MB (5120 KB, páginas de 640 x 8 KB); O
  • Tener un costo total estimado del plan de más de 3 unidades y no ser un plan trivial

Requisitos de la versión del servidor :

  • SQL Server 2014 SP2 (12.0.5000) o posterior
  • SQL Server 2016 SP1 (13.0.4001) o posterior
  • SQL Server 2017 RTM (14.0.1000) o posterior
Paul White reinstala a Monica
fuente