sys.dm_exec_cached_plans (Transact-SQL)sys.dm_exec_cached_plans (Transact-SQL)

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL DatabaseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database

Возвращает строку для каждого плана запроса, кэшируемого SQL ServerSQL Server для более быстрого выполнения запросов.Returns a row for each query plan that is cached by SQL ServerSQL Server for faster query execution. Можно использовать динамическое административное представление для поиска кэшированных планов запросов, кэшированного текста запросов, объема памяти, занимаемого кэшированными планами и счетчика повторного использования кэшированных планов.You can use this dynamic management view to find cached query plans, cached query text, the amount of memory taken by cached plans, and the reuse count of the cached plans.

Динамические административные представления в среде База данных SQL AzureAzure SQL Database не могут предоставлять информацию, которая может повлиять на автономность базы данных, или информацию о других базах данных, к которым имеет доступ пользователь.In База данных SQL AzureAzure SQL Database, dynamic management views cannot expose information that would impact database containment or expose information about other databases the user has access to. Во избежание раскрытия этой информации все строки, содержащие данные, не принадлежащие подключенному клиенту, отфильтровываются. Кроме того, значения в столбцах memory_object_address и pool_id фильтруются. значение столбца установлено в NULL.To avoid exposing this information, every row that contains data that doesn't belong to the connected tenant is filtered out. In addition, the values in the columns memory_object_address and pool_id are filtered; the column value is set to NULL.

Примечание

Чтобы вызвать эту функцию из Azure Synapse Analytics (Хранилище данных SQL)Azure Synapse Analytics (SQL Data Warehouse) или Параллельное хранилище данныхParallel Data Warehouse , используйте имя sys. dm_pdw_nodes_exec_cached_plans.To call this from Azure Synapse Analytics (Хранилище данных SQL)Azure Synapse Analytics (SQL Data Warehouse) or Параллельное хранилище данныхParallel Data Warehouse, use the name sys.dm_pdw_nodes_exec_cached_plans.

Имя столбцаColumn name Тип данныхData type ОписаниеDescription
bucketidbucketid intint Идентификатор сегмента хэша, в который кэшируется запись.ID of the hash bucket in which the entry is cached. Значение указывает диапазон от 0 до значения размера хэш-таблицы для типа кэша.The value indicates a range from 0 through the hash table size for the type of cache.

Для кэшей SQL Plans и Object Plans размер хэш-таблицы может достигать 10007 на 32-разрядных версиях систем и 40009 — на 64-разрядных.For the SQL Plans and Object Plans caches, the hash table size can be up to 10007 on 32-bit systems and up to 40009 on 64-bit systems. Для кэша Bound Trees размер хэш-таблицы может достигать 1009 на 32-разрядных версиях систем и 4001 на 64-разрядных.For the Bound Trees cache, the hash table size can be up to 1009 on 32-bit systems and up to 4001 on 64-bit systems. Для кэша расширенных хранимых процедур размер хэш-таблицы может достигать 127 на 32-разрядных и 64-разрядных версиях систем.For the Extended Stored Procedures cache the hash table size can be up to 127 on 32-bit and 64-bit systems.
refcountsrefcounts intint Число объектов кэша, ссылающихся на данный объект кэша.Number of cache objects that are referencing this cache object. Значение refcounts для записи должно быть не меньше 1, чтобы размещаться в кэше.Refcounts must be at least 1 for an entry to be in the cache.
usecountsusecounts intint Количество повторений поиска объекта кэша.Number of times the cache object has been looked up. Остается без увеличения, если параметризованные запросы обнаруживают план в кэше.Not incremented when parameterized queries find a plan in the cache. Может быть увеличен несколько раз при использовании инструкции showplan.Can be incremented multiple times when using showplan.
size_in_bytessize_in_bytes intint Число байтов, занимаемых объектом кэша.Number of bytes consumed by the cache object.
memory_object_addressmemory_object_address varbinary(8)varbinary(8) Адрес памяти кэшированной записи.Memory address of the cached entry. Это значение можно использовать с представлением sys.dm_os_memory_objects, чтобы проанализировать распределение памяти кэшированного плана, и с представлением sys.dm_os_memory_cache_entries для определения затрат на кэширование записи.This value can be used with sys.dm_os_memory_objects to get the memory breakdown of the cached plan and with sys.dm_os_memory_cache_entries_entries to obtain the cost of caching the entry.
cacheobjtypecacheobjtype nvarchar (34)nvarchar(34) Тип объекта в кэше.Type of object in the cache. Он может иметь одно из следующих значений:The value can be one of the following:

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

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

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

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

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

CLR Compiled Proc (скомпилированная процедура CLR)CLR Compiled Proc
objtypeobjtype nvarchar (16)nvarchar(16) Тип объекта.Type of object. Ниже приведены возможные значения и соответствующие им описания.Below are the possible values and their corresponding descriptions.

Proc: хранимая процедураProc: Stored procedure
Подготовлено: подготовленная инструкцияPrepared: Prepared statement
Прямое соединение: нерегламентированный запрос.Adhoc: Ad hoc query. Относится к Transact-SQLTransact-SQL отправке как события языка с помощью программы osql или sqlcmd , а не как удаленных вызовов процедур.Refers to Transact-SQLTransact-SQL submitted as language events by using osql or sqlcmd instead of as remote procedure calls.
Реплпрок: процедура-фильтр репликацииReplProc: Replication-filter-procedure
Триггер: триггерTrigger: Trigger
Представление: ПросмотрView: View
По умолчанию: по умолчаниюDefault: Default
Усртаб: пользовательская таблицаUsrTab: User table
Систаб: системная таблицаSysTab: System table
Проверка: ПРОВЕРОЧное ограничениеCheck: CHECK constraint
Правило: правилоRule: Rule
plan_handleplan_handle varbinary (64)varbinary(64) Идентификатор плана в оперативной памяти.Identifier for the in-memory plan. Этот идентификатор является временным и константным, только пока план сохраняется в кэше.This identifier is transient and remains constant only while the plan remains in the cache. Это значение можно использовать со следующими функциями динамического управления:This value may be used with the following dynamic management functions:

sys.dm_exec_sql_textsys.dm_exec_sql_text

sys.dm_exec_query_plansys.dm_exec_query_plan

sys.dm_exec_plan_attributessys.dm_exec_plan_attributes
pool_idpool_id intint Идентификатор пула ресурсов, для которого подсчитывается использование памяти для плана.The ID of the resource pool against which this plan memory usage is accounted for.
pdw_node_idpdw_node_id intint Применимо к: Azure Synapse Analytics (Хранилище данных SQL)Azure Synapse Analytics (SQL Data Warehouse) , Параллельное хранилище данныхParallel Data WarehouseApplies to: Azure Synapse Analytics (Хранилище данных SQL)Azure Synapse Analytics (SQL Data Warehouse), Параллельное хранилище данныхParallel Data Warehouse

Идентификатор узла, на котором находится данное распределение.The identifier for the node that this distribution is on.

11

РазрешенияPermissions

В SQL ServerSQL Server необходимо VIEW SERVER STATE разрешение.On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
На База данных SQLSQL Database уровнях Premium требуется VIEW DATABASE STATE разрешение в базе данных.On База данных SQLSQL Database Premium Tiers, requires the VIEW DATABASE STATE permission in the database. На База данных SQLSQL Database уровнях Standard и Basic требуется Администратор сервера или учетная запись администратора Azure Active Directory .On База данных SQLSQL Database Standard and Basic Tiers, requires the Server admin or an Azure Active Directory admin account.

ПримерыExamples

A.A. Возвращение текста пакета повторно используемых кэшированных записейReturning the batch text of cached entries that are reused

Следующий пример возвращает SQL-текст всех кэшированных записей, использованных более одного раза.The following example returns the SQL text of all cached entries that have been used more than once.

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  

Б.B. Возвращение планов запросов для всех кэшированных триггеровReturning query plans for all cached triggers

Следующий пример возвращает планы запросов для кэшированных триггеров.The following example returns the query plans of all cached triggers.

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  

В.C. Возвращение параметров SET, с которыми был скомпилирован планReturning the SET options with which the plan was compiled

Следующий пример возвращает параметры SET, с использованием которых был скомпилирован план.The following example returns the SET options with which the plan was compiled. sql_handleДля плана также возвращается.The sql_handle for the plan is also returned. Оператор PIVOT используется для вывода set_options атрибутов и в sql_handle виде столбцов, а не строк.The PIVOT operator is used to output the set_options and sql_handle attributes as columns rather than as rows. Дополнительные сведения о значении, возвращаемом в set_options , см. в разделе sys. Dm_exec_plan_attributes (TRANSACT-SQL).For more information about the value returned in set_options, see 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  

Г.D. Возвращение распределения памяти всех кэшированных скомпилированных плановReturning the memory breakdown of all cached compiled plans

Следующий пример возвращает распределение памяти, используемой всеми скомпилированными планами в кэше.The following example returns a breakdown of the memory used by all compiled plans in the cache.

SELECT plan_handle, ecp.memory_object_address AS CompiledPlan_MemoryObject,   
    omo.memory_object_address, 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  

См. такжеSee Also

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