Когда SQL Server предупреждает о чрезмерном предоставлении памяти?

18

Какие условия приводят к предупреждению плана выполнения «Чрезмерный грант» ?

Грант памяти запроса обнаружил «ExcessiveGrant», что может повлиять на надежность. Размер гранта: начальный 5128 КБ, финальный 5128 КБ, использованный 16 КБ.

SSMS

План SSMS

Свойства SSMS

Plan Explorer

Plan Explorer

Showplan xml

<Warnings>
    <MemoryGrantWarning GrantWarningKind="Excessive Grant"
        RequestedMemory="5128" GrantedMemory="5128" MaxUsedMemory="16" />
</Warnings>
Пол Уайт восстановил Монику
источник

Ответы:

19

Чтобы создать это предупреждение:

  1. Максимальные используемые памяти должны быть менее 5% от предоставленной памяти; И
  2. В запросе должен использоваться обычный (не маленький) ресурсный семафор

Чтобы использовать обычный семафор ресурса, запрос должен:

  • Были предоставлены памяти более 5 Мб (5120 Кб, 640 х 8KB страниц); ИЛИ
  • Иметь общую сметную стоимость плана более 3 единиц и не быть тривиальным планом

Требования к версии сервера :

  • SQL Server 2014 SP2 (12.0.5000) или новее
  • SQL Server 2016 SP1 (13.0.4001) или новее
  • SQL Server 2017 RTM (14.0.1000) или новее
Пол Уайт восстановил Монику
источник