Sql-Server

SQL Server 何時警告過多的記憶體授予?

  • January 31, 2019

產生*“過度授予”*執行計劃警告的條件是什麼?

查詢記憶體授權檢測到“ExcessiveGrant”,這可能會影響可靠性。授權大小:初始 5128 KB,最終 5128 KB,已用 16 KB。

SSMS

SSMS計劃

SSMS 屬性

計劃探索者

計劃探索者

展示計劃 xml

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

要產生此警告:

  1. 最大使用記憶體必須小於授予記憶體的 5 % ;
  2. 查詢必須使用正常(不小)資源信號量

要使用正常資源信號量,查詢必須:

  • 授予超過 5MB 的記憶體(5120 KB,640 x 8KB 頁);或者
  • 總估計計劃成本超過 3 個單位,而不是微不足道的計劃

伺服器版本要求

  • SQL Server 2014 SP2 (12.0.5000) 或更高版本
  • SQL Server 2016 SP1 (13.0.4001) 或更高版本
  • SQL Server 2017 RTM (14.0.1000) 或更高版本

引用自:https://dba.stackexchange.com/questions/228237