sys.dm_os_latch_stats (Transact-SQL)

Возвращает сведения обо всех случаях ожидания кратковременных блокировок, систематизированных по классам.

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Имя столбца

Тип данных

Описание

latch_class

nvarchar(120)

Имя класса кратковременных блокировок.

waiting_requests_count

bigint

Число ожиданий кратковременных блокировок в данном классе. Этот счетчик увеличивается в начале ожидания кратковременной блокировки.

wait_time_ms

bigint

Общее время ожидания кратковременных блокировок в данном классе в миллисекундах.

Примечание

Этот столбец обновляется раз в пять минут в течение периода ожидания кратковременной блокировки и в конце ожидания кратковременной блокировки.

max_wait_time_ms

bigint

Максимальный период времени ожидания данной кратковременной блокировки объектом памяти. Если данное значение неестественно велико, это может указывать на взаимоблокировку.

Разрешения

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

Замечания

Представление динамического управления sys.dm_os_latch_stats может быть использовано для выявления источника конфликтов кратковременной блокировки путем исследования относительного числа ожиданий и времени ожидания для различных классов кратковременных блокировок. В некоторых ситуациях возможно устранение состязания между кратковременными блокировками или снижение его остроты. Но возможны и такие ситуации, когда будет необходимо обратиться в службу поддержки пользователей Майкрософт.

Очистить содержимое представления sys.dm_os_latch_stats с помощью инструкции DBCC SQLPERF можно следующим образом.

DBCC SQLPERF ('sys.dm_os_latch_stats', CLEAR);
GO

В результате все счетчики будут обнулены.

Примечание

При перезапуске SQL Server эти статистические данные не сохраняются.Все данные представляют собой совокупные значения, полученные за время после последнего сброса статистических сведений или со времени запуска SQL Server.

Кратковременные блокировки

Кратковременная блокировка — это облегченный объект синхронизации, используемый различными компонентами SQL Server. Кратковременные блокировки используются прежде всего для синхронизации страниц баз данных. Каждая кратковременная блокировка ассоциируется с одной единицей распределения.

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

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

Примечание

sys.dm_os_latch_stats не отслеживает запросы на кратковременные блокировки, которые были представлены немедленно или которые завершились неудачей без периода ожидания.

В следующей таблице содержатся краткие описания различных классов кратковременных блокировок.

Класс кратковременных блокировок

Описание

ALLOC_CREATE_RINGBUF

Используется внутренними механизмами SQL Server для инициализации синхронизации процесса создания кольцевого буфера размещения.

ALLOC_CREATE_FREESPACE_CACHE

Используется для инициализации синхронизации кэшей свободного внутреннего пространства для куч.

ALLOC_CACHE_MANAGER

Используется для синхронизации проверок внутренней связности.

ALLOC_FREESPACE_CACHE

Используется для синхронизации доступа к кэшу страниц со свободным пространством для размещения куч и больших двоичных объектов (BLOBs). Состязание за доступ к кратковременным блокировкам этого класса может происходить в случаях, когда несколько соединений одновременно пытаются ввести строки в кучу или в BLOB. Снизить состязание можно с помощью секционирования соответствующего объекта. Каждая секция имеет собственную кратковременную блокировку. В ходе секционирования вставки будут распределены по нескольким кратковременным блокировкам.

ALLOC_EXTENT_CACHE

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

ACCESS_METHODS_DATASET_PARENT

Используется для синхронизации доступа дочернего набора данных к родительскому набору данных при выполнении параллельных операций.

ACCESS_METHODS_HOBT_FACTORY

Используется для синхронизации доступа к внутренней хэш-таблице.

ACCESS_METHODS_HOBT

Используется для синхронизации доступа к хранимому в памяти представлению HoBt.

ACCESS_METHODS_HOBT_COUNT

Используется для синхронизации доступа к памяти HoBt и к счетчикам строк.

ACCESS_METHODS_HOBT_VIRTUAL_ROOT

Используется для синхронизации доступа к абстракции корневой страницы внутреннего сбалансированного дерева.

ACCESS_METHODS_CACHE_ONLY_HOBT_ALLOC

Используется для синхронизации доступа к рабочим таблицам.

ACCESS_METHODS_BULK_ALLOC

Используется для синхронизации доступа между механизмами массового выделения пространства.

ACCESS_METHODS_SCAN_RANGE_GENERATOR

Используется для синхронизации доступа к генератору диапазонов при выполнении параллельного сканирования.

ACCESS_METHODS_KEY_RANGE_GENERATOR

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

APPEND_ONLY_STORAGE_INSERT_POINT

Используется для синхронизации вставок в быстродействующие блоки памяти, заполняемые только путем присоединения новых записей.

APPEND_ONLY_STORAGE_FIRST_ALLOC

Используется для синхронизации первого размещения в блоке памяти, заполняемом только путем присоединения новых записей.

APPEND_ONLY_STORAGE_UNIT_MANAGER

Используется для синхронизации доступа к структурам внутренних данных внутри диспетчера быстродействующих блоков памяти, заполняемых только путем присоединения новых записей.

APPEND_ONLY_STORAGE_MANAGER

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

BACKUP_RESULT_SET

Используется для синхронизации параллельных резервных копий результирующих наборов.

BACKUP_TAPE_POOL

Используется для синхронизации пулов лент резервных копий.

BACKUP_LOG_REDO

Используется для синхронизации операций повтора журнала резервного копирования.

BACKUP_INSTANCE_ID

Используется для синхронизации создания ID экземпляров счетчиков системного монитора резервного копирования.

BACKUP_MANAGER

Используется для синхронизации внутреннего диспетчера резервного копирования.

BACKUP_MANAGER_DIFFERENTIAL

Используется для синхронизации операций разностных резервных копий с DBCC.

BACKUP_OPERATION

Используется для синхронизации внутренней структуры данных при проведении операций резервного копирования, таких как резервное копирование базы данных, журналов или файлов.

BACKUP_FILE_HANDLE

Используется для синхронизации операций по открытию файлов при выполнении операций восстановления.

BUFFER

Используется для синхронизации краткосрочного доступа к страницам баз данных. Кратковременная блокировка буфера необходима перед считыванием или модификацией любой страницы базы данных. Конфликт кратковременной блокировки буферов может указывать на наличие ряда проблем, в числе которых — «горячие» страницы и низкая производительность подсистемы ввода-вывода.

Этот класс кратковременных блокировок охватывает все возможные способы использования кратковременных блокировок страниц. Представление sys.dm_os_wait_stats устанавливает различие между ожиданиями кратковременных блокировок страниц, вызванными операциями ввода-вывода и операциями чтения и записи на данной странице.

BUFFER_POOL_GROW

Используется для синхронизации внутреннего диспетчера буферов при выполнении операций увеличения буферного пула.

DATABASE_CHECKPOINT

Используется для сериализации контрольных точек внутри базы данных.

CLR_PROCEDURE_HASHTABLE

Только для внутреннего использования.

CLR_UDX_STORE

Только для внутреннего использования.

CLR_DATAT_ACCESS

Только для внутреннего использования.

CLR_XVAR_PROXY_LIST

Только для внутреннего использования.

DBCC_CHECK_AGGREGATE

Только для внутреннего использования.

DBCC_CHECK_RESULTSET

Только для внутреннего использования.

DBCC_CHECK_TABLE

Только для внутреннего использования.

DBCC_CHECK_TABLE_INIT

Только для внутреннего использования.

DBCC_CHECK_TRACE_LIST

Только для внутреннего использования.

DBCC_FILE_CHECK_OBJECT

Только для внутреннего использования.

DBCC_PERF

Используется для синхронизации счетчиков внутреннего системного монитора.

DBCC_PFS_STATUS

Только для внутреннего использования.

DBCC_OBJECT_METADATA

Только для внутреннего использования.

DBCC_HASH_DLL

Только для внутреннего использования.

EVENTING_CACHE

Только для внутреннего использования.

FCB

Используется для синхронизации доступа к блоку управления файлами.

FCB_REPLICA

Только для внутреннего использования.

FGCB_ALLOC

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

FGCB_ADD_REMOVE

Используется для синхронизации доступа к файловым группам для выполнения над файлами операций ADD и DROP.

FILEGROUP_MANAGER

Только для внутреннего использования.

FILE_MANAGER

Только для внутреннего использования.

FILESTREAM_FCB

Только для внутреннего использования.

FILESTREAM_FILE_MANAGER

Только для внутреннего использования.

FILESTREAM_GHOST_FILES

Только для внутреннего использования.

FILESTREAM_DFS_ROOT

Только для внутреннего использования.

LOG_MANAGER

Только для внутреннего использования.

FULLTEXT_DOCUMENT_ID

Только для внутреннего использования.

FULLTEXT_DOCUMENT_ID_TRANSACTION

Только для внутреннего использования.

FULLTEXT_DOCUMENT_ID_NOTIFY

Только для внутреннего использования.

FULLTEXT_LOGS

Только для внутреннего использования.

FULLTEXT_CRAWL_LOG

Только для внутреннего использования.

FULLTEXT_ADMIN

Только для внутреннего использования.

FULLTEXT_AMDIN_COMMAND_CACHE

Только для внутреннего использования.

FULLTEXT_LANGUAGE_TABLE

Только для внутреннего использования.

FULLTEXT_CRAWL_DM_LIST

Только для внутреннего использования.

FULLTEXT_CRAWL_CATALOG

Только для внутреннего использования.

FULLTEXT_FILE_MANAGER

Только для внутреннего использования.

DATABASE_MIRRORING_REDO

Только для внутреннего использования.

DATABASE_MIRRORING_SERVER

Только для внутреннего использования.

DATABASE_MIRRORING_CONNECTION

Только для внутреннего использования.

DATABASE_MIRRORING_STREAM

Только для внутреннего использования.

QUERY_OPTIMIZER_VD_MANAGER

Только для внутреннего использования.

QUERY_OPTIMIZER_ID_MANAGER

Только для внутреннего использования.

QUERY_OPTIMIZER_VIEW_REP

Только для внутреннего использования.

RECOVERY_BAD_PAGE_TABLE

Только для внутреннего использования.

RECOVERY_MANAGER

Только для внутреннего использования.

SECURITY_OPERATION_RULE_TABLE

Только для внутреннего использования.

SECURITY_OBJPERM_CACHE

Только для внутреннего использования.

SECURITY_CRYPTO

Только для внутреннего использования.

SECURITY_KEY_RING

Только для внутреннего использования.

SECURITY_KEY_LIST

Только для внутреннего использования.

SERVICE_BROKER_CONNECTION_RECEIVE

Только для внутреннего использования.

SERVICE_BROKER_TRANSMISSION

Только для внутреннего использования.

SERVICE_BROKER_TRANSMISSION_UPDATE

Только для внутреннего использования.

SERVICE_BROKER_TRANSMISSION_STATE

Только для внутреннего использования.

SERVICE_BROKER_TRANSMISSION_ERRORS

Только для внутреннего использования.

SSBXmitWork

Только для внутреннего использования.

SERVICE_BROKER_MESSAGE_TRANSMISSION

Только для внутреннего использования.

SERVICE_BROKER_MAP_MANAGER

Только для внутреннего использования.

SERVICE_BROKER_HOST_NAME

Только для внутреннего использования.

SERVICE_BROKER_READ_CACHE

Только для внутреннего использования.

SERVICE_BROKER_WAITFOR_MANAGER

Только для внутреннего использования.

SERVICE_BROKER_WAITFOR_TRANSACTION_DATA

Только для внутреннего использования.

SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA

Только для внутреннего использования.

SERVICE_BROKER_TRANSPORT

Только для внутреннего использования.

SERVICE_BROKER_MIRROR_ROUTE

Только для внутреннего использования.

TRACE_ID

Только для внутреннего использования.

TRACE_AUDIT_ID

Только для внутреннего использования.

TRACE

Только для внутреннего использования.

TRACE_CONTROLLER

Только для внутреннего использования.

TRACE_EVENT_QUEUE

Только для внутреннего использования.

TRANSACTION_DISTRIBUTED_MARK

Только для внутреннего использования.

TRANSACTION_OUTCOME

Только для внутреннего использования.

NESTING_TRANSACTION_READONLY

Только для внутреннего использования.

NESTING_TRANSACTION_FULL

Только для внутреннего использования.

MSQL_TRANSACTION_MANAGER

Только для внутреннего использования.

DATABASE_AUTONAME_MANAGER

Только для внутреннего использования.

UTILITY_DYNAMIC_VECTOR

Только для внутреннего использования.

UTILITY_SPARSE_BITMAP

Только для внутреннего использования.

UTILITY_DATABASE_DROP

Только для внутреннего использования.

UTILITY_DYNAMIC_MANAGER_VIEW

Только для внутреннего использования.

UTILITY_DEBUG_FILESTREAM

Только для внутреннего использования.

UTILITY_LOCK_INFORMATION

Только для внутреннего использования.

VERSIONING_TRANSACTION

Только для внутреннего использования.

VERSIONING_TRANSACTION_LIST

Только для внутреннего использования.

VERSIONING_TRANSACTION_CHAIN

Только для внутреннего использования.

VERSIONING_STATE

Только для внутреннего использования.

VERSIONING_STATE_CHANGE

Только для внутреннего использования.

KTM_VIRTUAL_CLOCK

Только для внутреннего использования.

См. также

Справочник

DBCC SQLPERF (Transact-SQL)

Динамические административные представления и функции (Transact-SQL)

Динамические административные представления, относящиеся к операционной системе SQL Server (Transact-SQL)