Поделиться через


sys.dm_exec_cached_plans

Изменения: 12 декабря 2006 г.

Возвращает строку для каждого плана запроса, кэшируемого SQL Server для более быстрого выполнения запросов. Можно использовать динамическое административное представление для поиска кэшированных планов запросов, кэшированного текста запросов, объема памяти, занимаемого кэшированными планами и счетчика повторного использования кэшированных планов.

ms187404.note(ru-ru,SQL.90).gifПримечание.
Для планов запросов динамическое административное представление sys.dm_exec_cached_plans сопоставляется системной таблице syscacheobjects в SQL Server 2000.

Имя столбца

Тип данных

Описание

bucketid

int

Идентификатор сегмента хэша, в который кэшируется запись. Значение указывает диапазон от 0 до значения размера хэш-таблицы для типа кэша.

Для кэшей SQL Plans и Object Plans размер хэш-таблицы может достигать 10007 на 32-разрядных версиях систем и 40009 на 64-разрядных. Для кэша Bound Trees размер хэш-таблицы может достигать 1009 на 32-разрядных версиях систем и 4001 на 64-разрядных. Для кэша расширенных хранимых процедур размер хэш-таблицы может достигать 127 на 32-разрядных и 64-разрядных версиях систем. Дополнительные сведения о типах кэшей и хэш-таблицах см. в разделе sys.dm_os_memory_cache_hash_tables.

refcounts

int

Число объектов кэша, ссылающихся на данный объект кэша. Значение refcounts для записи должно быть не меньше 1, чтобы размещаться в кэше.

usecounts

int

Количество случаев использования данного объекта кэша с момента его создания.

size_in_bytes

int

Число байт, занимаемых объектом кэша.

memory_object_address

varbinary(8)

Адрес памяти кэшированной записи. Это значение можно использовать с представлением sys.dm_os_memory_objects, чтобы проанализировать распределение памяти кэшированного плана, и с представлением sys.dm_os_memory_cache_entries для определения затрат на кэширование записи.

cacheobjtype

nvarchar(34)

Тип объекта в кэше. Значение может быть одним из следующих:

  • Compiled Plan (скомпилированный план);
  • Parse Tree (дерево синтаксического анализа);
  • Extended Proc (расширенные процедуры);
  • CLR Compiled Func (скомпилированная функция CLR);
  • CLR Compiled Proc (скомпилированная процедура CLR).

objtype

nvarchar(16)

Тип объекта. Значение может быть одним из следующих.

Значение

Описание

ProcХранимая процедура

PreparedПодготовленная инструкция

AdhocНерегламентированный запрос1

ReplProcПроцедура фильтра репликации

TriggerТриггер

ViewПредставление

DefaultПо умолчанию

UsrTabПользовательская таблица

SysTabСистемная таблица

CheckОграничение CHECK

RuleПравило

plan_handle

varbinary(64)

Идентификатор плана в оперативной памяти. Этот идентификатор является временным и не меняется, только пока план сохраняется в кэше. Это значение можно использовать со следующими функциями динамического управления:

sys.dm_exec_sql_text

sys.dm_exec_query_plan

sys.dm_exec_plan_attributes

1  Обозначает код Transact-SQL, отправленный с помощью программ osql или sqlcmd в виде событий языка, а не в виде удаленных вызовов процедур.

Разрешения

Требуется разрешение VIEW SERVER STATE на сервере.

Примеры

А. Возвращение текста пакета повторно используемых кэшированных записей

Следующий пример возвращает SQL-текст всех кэшированных записей, использованных более одного раза.

SELECT usecounts, cacheobjtype, objtype, text 
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle) 
WHERE usecounts > 1 
ORDER BY usecounts DESC;
GO

Б. Возвращение планов запросов для всех кэшированных триггеров

Следующий пример возвращает планы запросов для кэшированных триггеров.

SELECT plan_handle, query_plan, objtype 
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_query_plan(plan_handle) 
WHERE objtype ='Trigger';
GO

В. Возвращение параметров SET, с которыми был скомпилирован план

Следующий пример возвращает параметры SET, с использованием которых был скомпилирован план. Для плана также возвращается атрибут sql_handle. Оператор PIVOT используется для вывода атрибутов set_options и sql_handle в виде столбцов, а не строк. Дополнительные сведения о значении, возвращаемом в атрибуте set_options, см. в разделе sys.dm_exec_plan_attributes.

SELECT plan_handle, pvt.set_options, pvt.sql_handle
FROM (
      SELECT plan_handle, epa.attribute, epa.value 
      FROM sys.dm_exec_cached_plans 
      OUTER APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa
      WHERE cacheobjtype = 'Compiled Plan'
      ) AS ecpa 
PIVOT (MAX(ecpa.value) FOR ecpa.attribute IN ("set_options", "sql_handle")) AS pvt;
GO

Г. Возвращение распределения памяти всех кэшированных скомпилированных планов

Следующий пример возвращает распределение памяти, используемой всеми скомпилированными планами в кэше.

SELECT plan_handle, ecp.memory_object_address AS CompiledPlan_MemoryObject, 
    omo.memory_object_address, pages_allocated_count, type, page_size_in_bytes 
FROM sys.dm_exec_cached_plans AS ecp 
JOIN sys.dm_os_memory_objects AS omo 
    ON ecp.memory_object_address = omo.memory_object_address 
    OR ecp.memory_object_address = omo.parent_address
WHERE cacheobjtype = 'Compiled Plan';
GO

См. также

Справочник

Динамические административные представления и функции
Динамические административные представления и соответствующие функции, связанные с выполнением
sys.dm_exec_query_plan
sys.dm_exec_plan_attributes
sys.dm_exec_sql_text
sys.dm_os_memory_objects
sys.dm_os_memory_cache_entries

Другие ресурсы

Использование APPLY

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Измененное содержимое.
  • Добавлен раздел «Примеры».
  • Изменены определения столбцов bucketid, refcounts, memory_object_address, objtype и cacheobjtype.

5 декабря 2005 г.

Измененное содержимое.
  • Имя столбца Pagesused изменено на size_in_bytes.
  • Столбец memory_object_address теперь следует за столбцом size_in_bytes.