web-dev-qa-db-ja.com

SQL Serverは、過剰なメモリ許可についていつ警告しますか?

"Excessive Grant"実行プラン警告を生成する条件は何ですか?

クエリメモリの許可で "ExcessiveGrant"が検出されました。これは信頼性に影響を与える可能性があります。付与サイズ:最初の5128 KB、最後の5128 KB、使用済み16 KB。

SSMS

SSMS plan

SSMS properties

計画エクスプローラー

Plan Explorer

Showplan xml

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

この警告を生成するには:

  1. 最大使用量メモリは、許可されたメモリの5%未満である必要があります。 [〜#〜]および[〜#〜]
  2. クエリはregular(小さくない)リソースセマフォを使用する必要があります

通常のリソースセマフォ を使用するには、クエリは次の条件を満たす必要があります。

  • 5MBを超えるメモリを許可(5120 KB、640 x 8KBページ); [〜#〜]または[〜#〜]
  • 合計計画コストがユニット以上であり、簡単なプランではない

サーバー バージョン要件

  • SQL Server 2014 SP2(12.0.5000)以降
  • SQL Server 2016 SP1(13.0.4001)以降
  • SQL Server 2017 RTM(14.0.1000)以降
19
Paul White 9