Que mesure réellement le compteur Perfmon «Plans sous-optimaux / s»?

13

Dans SQL Server, que mesure le compteur Perfmon "Statistiques des groupes de charges de travail: plans sous-optimaux / s"?

Il s'agit de l'un des compteurs du gouverneur de ressources , il est donc mesuré au niveau du groupe de charge de travail (que vous avez, que vous configuriez RG ou non).

Je ne demande pas ce qui fait un bon plan ou un mauvais plan, mais qu'est-ce que cette contre-mesure en particulier et où allez-vous pour trouver les plans correspondants? Par exemple, je ne trouve rien dans les événements étendus qui semble correspondre à une requête déclenchant le compteur "Plans sous-optimaux / s".

Brent Ozar
la source
1
maintenant je regarde une instance avec 1322 pour "plans sous-optimaux / sec" et je me demande où chercher. C'est une bonne question, Brent.
Max Vernon
Merci! Je viens de l'ajouter à sp_BlitzFirst parce que je ne l'avais jamais vu avant d'avoir fait du travail chez Hekaton cette semaine.
Brent Ozar
Je me demande s'il s'agit du niveau d'optimisation du plan expirant avant d'obtenir un excellent plan.
Max Vernon
Je pensais que ce serait StatementOptmEarlyAbortReason="TimeOut"difficile à dire avec certitude! Cependant, cela ne correspond pas bien au compteur de perfons.
Max Vernon

Réponses:

6

Ce compteur suit deux éléments:

  1. Temps libre
  2. Limite de mémoire dépassée

Les valeurs peuvent être trouvées dans le plan XML comme Max l'a proposé dans les commentaires. Je peux confirmer qu'il en est ainsi depuis au moins SQL Server 2008.

Félicitations à @Max Vernon et @Joe Obbish.

La description de MSDN BOL Technet Docs n'est pas très utile.

Sean Gallardy
la source
2
Merci, Sean. J'ai regardé sys.dm_os_performance_counterset recherché dans le cache du plan des éléments de délai d'expiration, et j'ai vu le DMV ne pas incrémenter pendant que le sys.dm_exec_query_statsmontre les requêtes expirées récemment utilisées. Je vais peut-être préparer un MCVE demain pour explorer cela. Notez également que cela se produit sur l'une de nos instances de production EDW exécutant 2012 Enterprise.
Max Vernon