web-dev-qa-db-fra.com

SYS.DM_EXEC_PROCEDURE_STATS HISTOIRE MANQUANT?

Mon patron voudrait que je trouve que (d'environ 400+) procédures stockées ne sont plus utilisées par notre site Web. J'ai trouvé et retravaillé un script pour me donner les détails de la plupart des exécutions récentes, mais elle ne remonte qu'à 10h17 le 1er septembre.

Mon patron m'assure que (bien qu'il aime bricoler avec le serveur dans son temps libre), le serveur a été debout depuis le 5 mai.

Je suis assez nouveau à cela, alors expliquez-le comme si je suis un animal de compagnie de maison particulièrement simple, mais il y a une raison pour laquelle ma table de résultats ne revient que 1 mois, au lieu de la 6? Je supposerais que la disponibilité est réinitialisée si le serveur est redémarré, mais je ne suis pas sûr de savoir pourquoi je n'aurais aucune histoire qui revêtue de loin.

Affiche la procédure en utilisant right-click -> modify Comptez comme une exécution?

requête SQL

SELECT qt.text AS 'SP Name',
qt.dbid as 'SP DB',
qs.execution_count AS 'Execution Count',
qs.total_worker_time/qs.execution_count AS 'AvgWorkerTime',
qs.total_worker_time AS 'TotalWorkerTime',
qs.total_physical_reads AS 'PhysicalReads',
qs.last_execution_time 'Last Executed'
FROM sys.dm_exec_procedure_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
where qs.database_id = 5
ORDER BY qs.last_execution_time asc

Ma question se rapporte davantage au délai des résultats. Je trouve les informations dont j'ai besoin dans le mois des résultats que j'ai, mais je suis inquiet, il y a 6 mois de résultats qui ne sont pas trouvés trouvés.

Ce retour 5 mai:

select create_date from sys.databases where name = N'tempdb';

Les retours suivants "2015-05-05 08: 27: 42.080":

SELECT sqlserver_start_time FROM sys.dm_os_sys_info;

Enfin, celui-ci revient "2013-09-15 19: 34: 34.667":

SELECT top 1 [rs].[destination_database_name], [rs].[restore_date] 
FROM msdb..restorehistory rs 
where destination_database_name = '%ID%' 
ORDER BY [rs].[restore_date] DESC;
5
Wompguinea

De - la documentation sur sys.dm_exec_procedure_stats :

Renvoie les statistiques de performance globales pour les procédures stockées en cache. La vue renvoie une ligne pour chaque plan de procédure stockée en cache et la durée de vie de la ligne est tant que la procédure stockée reste mise en cache. Lorsqu'une procédure stockée est retirée du cache, la ligne correspondante est éliminée de cette vue.

Par conséquent, il est probable que quelque temps le 1er septembre, le serveur disposait d'un événement qui a provoqué la rinçage du cache de procédure, ou à tout le moins, a provoqué les plans pour les procédures que vous aimez être poussées sur le cache. Nous avons déjà exclu le coupable le plus évident - un basculement ou un redémarrage de service - mais cela aurait pu être quelque chose, vraiment:

  • un test unitaire qui a exécuté une série de procédures entière, remplissant le cache
  • une sp_configure Modification, qui - pour certaines options - a un effet secondaire d'effacement du cache de procédure
  • une seule requête avec une énorme bourse de mémoire
  • un manuel DBCC FREEPROCCACHE;
  • recompilats explicites ou abandonner/recréer des procédures
  • ...
6
Aaron Bertrand