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 |
Только для внутреннего использования. |
См. также
Справочник
Динамические административные представления и функции (Transact-SQL)