sys.dm_os_latch_stats (Transact-SQL)
Возвращает сведения обо всех случаях ожидания кратковременных блокировок, систематизированных по классам.
Имя столбца |
Тип данных |
Описание |
---|---|---|
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 |
Только для внутреннего использования. |