Хранит ли SQL Server 2008 дату создания планов выполнения?


13

Недавно мы обновили используемое нами приложение, которое включало изменение схемы для базы данных. Эти изменения могли заставить кэшированные планы выполнения быть отброшенными. Если бы SQL Server был вынужден создать кучу новых планов, это могло бы замедлить работу пользователя. Я хотел бы узнать, было ли это так.

Итак, мой вопрос: хранит ли SQL Server 2008 дату создания кэшированных планов выполнения? В административном представлении sys.dm_exec_cached_plansнет полей даты, поэтому я подозреваю, что нет.

Ответы:


12

Он не хранится sys.dm_exec_cached_plansи не похоронен нигде в XML-плане, который я могу найти. Однако в других DMV есть полезная информация.

Для хранимых процедур мы можем узнать время кэширования плана sys.dm_exec_procedure_stats:

SELECT TOP(250) 
    p.name AS [SP Name]
    , ps.execution_count
    , ps.cached_time
FROM 
    sys.procedures p WITH (NOLOCK)
INNER JOIN 
    sys.dm_exec_procedure_stats ps WITH (NOLOCK)
ON  p.[object_id] = ps.[object_id]
WHERE 
    ps.database_id = DB_ID()
ORDER BY 
    ps.cached_time DESC 
OPTION 
    (RECOMPILE);

Для специальных запросов есть время создания в sys.dm_exec_query_stats:

SELECT TOP(250) 
    st.[text] AS [QueryText]
    , qs.execution_count
    , qs.creation_time
FROM 
    sys.dm_exec_cached_plans cp WITH (NOLOCK)
INNER JOIN
    sys.dm_exec_query_stats qs WITH (NOLOCK)
ON  qs.plan_handle = cp.plan_handle
CROSS APPLY 
    sys.dm_exec_sql_text(cp.plan_handle) st
WHERE 
    cp.objtype = N'Adhoc' 
ORDER BY 
    qs.creation_time DESC 
OPTION 
    (RECOMPILE);

Согласно @SqlKiwi ... переход с creation_time на cached_time произошел только потому, что в 2008 году были добавлены процедуры и триггеры, и была использована возможность выбрать более описательное имя. Время создания / кэширования отражает последнюю компиляцию, а не время создания исходного плана.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.