Що насправді вимірює лічильник Perfmon "Субоптимальні плани / сек"?


13

Що в SQL Server вимірює лічильник Perfmon "Статистика навантаження групи: Субоптимальні плани / сек"?

Це один з лічильників управління ресурсами , тому він вимірюється в групі навантаження (який у вас є, налаштовуєте ви RG чи ні.)

Я не запитую, що робить хороший план чи поганий план, але що конкретно робить цей протимір, і куди ви їдете, щоб знайти точні відповідні плани? Наприклад, я не можу знайти нічого в розширених подіях, яке могло б відповідати запиту, що викликає лічильник "Субоптимальні плани / сек".


1
тепер я дивлюся на екземпляр з 1322 для "неоптимальних планів / сек" і цікавлюсь, де шукати. Це гарне питання, Брент.
Макс Вернон

Спасибі! Я щойно додав його до sp_BlitzFirst, тому що я цього разу не бачив, коли я робив якусь роботу в Хекатоні.
Брент Озар

Цікаво, чи йдеться про час вичерпання рівня оптимізації плану, перш ніж отримати чудовий план.
Макс Вернон

Я думав, що це буде StatementOptmEarlyAbortReason="TimeOut"важко, але сказати точно! Однак це не добре співвідноситься з лічильником парфмонів.
Макс Вернон

Відповіді:


6

У цьому лічильнику є два елементи:

  1. Час вийшов
  2. Ліміт пам’яті перевищено

Значення можна знайти в XML-плані, як запропонував Макс у коментарях. Я можу підтвердити, що так було принаймні з SQL Server 2008.

Кудо до @Max Вернона та @Joe Obbish.

Опис документів MSDN BOL Technet Docs не дуже корисний.


2
Спасибі, Шон. Я переглядав sys.dm_os_performance_countersі шукав кеш плану для елементів Timeout, і бачив, як DMV не збільшується, в той час як в ньому sys.dm_exec_query_statsвідображаються нещодавно використані запити з тимчасовим вимиканням. Можливо, завтра я зберу MCVE, щоб вивчити це. Також, зауважимо, що це відбувається на одному з виробничих екземплярів EDW під управлінням 2012 Enterprise.
Макс Вернон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.