web-dev-qa-db-fra.com

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

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

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

SSMS plan

SSMS properties

Explorateur de plans

Plan Explorer

Showplan xml

<Warnings>
    <MemoryGrantWarning GrantWarningKind="Excessive Grant"
        RequestedMemory="5128" GrantedMemory="5128" MaxUsedMemory="16" />
</Warnings>
19
Paul White 9

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 régulier (pas petit)

Pour utiliser le sémaphore de ressource régulière la requête doit:

  • Avoir accordé de la mémoire sur 5 Mo (5120 Ko, 640 x 8 Ko pages); [~ # ~] ou [~ # ~]
  • Avoir un coût total du plan estimé de sur 3 unités et ne pas être un plan trivial

Serveur exigences de version :

  • 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
19
Paul White 9