Quand SQL Server avertit-il d'une allocation de mémoire excessive?


18

Quelles sont les conditions qui produisent un avertissement de plan d'exécution "Subvention excessive" ?

L'allocation de mémoire de requête a détecté "ExcessiveGrant", ce qui peut affecter la fiabilité. Taille de la subvention: 5128 Ko initiaux, 5128 Ko finaux, 16 Ko utilisés.

SSMS

Plan SSMS

Propriétés SSMS

Explorateur de plans

Explorateur de plans

Showplan xml

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

Réponses:


19

Pour produire cet avertissement:

  1. La mémoire maximale utilisée doit être inférieure à 5% de la mémoire accordée; ET
  2. La requête doit utiliser le sémaphore de ressource normal (pas petit)

Pour utiliser le sémaphore de ressource standard, la requête doit:

  • Avoir accordé plus de 5 Mo de mémoire (5120 Ko, 640 pages de 8 Ko); OU
  • Avoir un coût total du plan estimé de plus de 3 unités et ne pas être un plan trivial

Exigences de version du serveur :

  • SQL Server 2014 SP2 (12.0.5000) ou version ultérieure
  • SQL Server 2016 SP1 (13.0.4001) ou version ultérieure
  • SQL Server 2017 RTM (14.0.1000) ou version ultérieure
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.