Skip to main content
sys.dm_exec_cached_plans (Transact-SQL)
 

ПРИМЕНЯЕТСЯ К: даSQL Server (начиная с 2008) даБаза данных SQL Azure даХранилище данных SQL Azure даParallel Data Warehouse

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

Динамические административные представления в среде База данных SQL Azure не могут предоставлять информацию, которая может повлиять на автономность базы данных, или информацию о других базах данных, к которым имеет доступ пользователь. Чтобы избежать предоставления этих сведений, все строки, содержащие данные, не принадлежащие к подключенному клиенту, фильтруются. Кроме того, значения в столбцах memory_object_address и pool_id фильтруются; значение столбца имеет значение NULL.

System_CAPS_ICON_note.jpg Примечание


Вызывать его из Хранилище данных SQL Azure или Параллельное хранилище данных, используйте имя sys.dm_pdw_nodes_exec_cached_plans.

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

Для кэшей SQL Plans и Object Plans размер хэш-таблицы может достигать 10007 на 32-разрядных версиях систем и 40009 — на 64-разрядных. Для кэша Bound Trees размер хэш-таблицы может достигать 1009 на 32-разрядных версиях систем и 4001 на 64-разрядных. Для кэша расширенных хранимых процедур размер хэш-таблицы может достигать 127 на 32-разрядных и 64-разрядных версиях систем.
refcountsintЧисло объектов кэша, ссылающихся на данный объект кэша. Refcounts должен быть по крайней мере 1 запись в кэше.
usecountsintКоличество повторений поиска объекта кэша. Остается без увеличения, если параметризованные запросы обнаруживают план в кэше. Может быть увеличен несколько раз при использовании инструкции showplan.
size_in_bytesintЧисло байтов, занимаемых объектом кэша.
memory_object_addressvarbinary(8)Адрес памяти кэшированной записи. Это значение может использоваться с sys.dm_os_memory_objects для получения распределение памяти кэшированного плана и с sys.dm_os_memory_cache_entriesдля определения затрат на кэширование записи.
cacheobjtypenvarchar(34)Тип объекта в кэше. Значение может быть одним из следующих:

Compiled Plan (скомпилированный план)

Compiled Plan Stub (заглушка скомпилированного плана)

Parse Tree (дерево синтаксического анализа)

Extended Proc (расширенные процедуры)

CLR Compiled Func (скомпилированная функция CLR)

CLR Compiled Proc (скомпилированная процедура CLR)
objtypenvarchar(16) в форматеТип объекта. Ниже приведены возможные значения и их соответствующие описания.

Proc: Хранимая процедура
Подготовка: Подготовленной инструкции
Adhoc: нерегламентированного запроса. Ссылается на Transact-SQL отправленный в виде событий языка, используя osql или sqlcmd вместо виде удаленных вызовов процедур.
ReplProc: Фильтр процедура репликации
Триггер: триггер
Просмотр: Просмотр
По умолчанию: по умолчанию
UsrTab: Пользовательская таблица
SysTab: Системная таблица
Проверка: ПРОВЕРОЧНОГО ограничения
Правило: правило
plan_handlevarbinary(64)Идентификатор плана в оперативной памяти. Этот идентификатор является временным и константным, только пока план сохраняется в кэше. Это значение можно использовать со следующими функциями динамического управления:

  sys.dm_exec_sql_text

  sys.dm_exec_query_plan

  sys.dm_exec_plan_attributes
pool_idintИдентификатор пула ресурсов, для которого подсчитывается использование памяти для плана.
pdw_node_idintПрименяется к: Хранилище данных SQL Azure,Параллельное хранилище данных

Идентификатор узла, который это распределение.

1

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

На База данных SQL уровней Premium необходимо разрешение VIEW DATABASE STATE в базе данных. На База данных SQL уровней Standard и Basic требуется База данных SQL учетная запись администратора.

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

Следующий пример возвращает 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 (Transact-SQL).

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  

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