Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Система аналитической платформы (PDW)
SQL база данных в Microsoft Fabric
Возвращает сведения обо всех случаях ожидания кратковременных блокировок, систематизированных по классам.
Примечание.
Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_os_latch_stats. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
| Имя столбца | Тип данных | Description |
|---|---|---|
| latch_class | nvarchar(60) | Имя класса кратковременных блокировок. |
| waiting_requests_count | bigint | Число ожиданий кратковременных блокировок в данном классе. Этот счетчик увеличивается в начале ожидания кратковременной блокировки. |
| wait_time_ms | bigint | Общее время ожидания кратковременных блокировок в данном классе в миллисекундах. Примечание. Этот столбец обновляется каждые пять минут во время ожидания блокировки и в конце ожидания блокировки. |
| max_wait_time_ms | bigint | Максимальный период времени ожидания данной кратковременной блокировки объектом памяти. Если данное значение неестественно велико, это может указывать на взаимоблокировку. |
| pdw_node_id | int |
Область применения: Azure Synapse Analytics, Analytics Platform System (PDW) Идентификатор узла, на который находится данное распределение. |
Разрешения
На SQL Server и управляемом экземпляре SQL необходимо разрешение VIEW SERVER STATE.
Для целей службы База данных SQL Basic, S0 и S1, а также для баз данных в эластичных пулах, учетной записи администратора сервера, учетной записи администратора Microsoft Entra или членства в ##MS_ServerStateReader##роли сервера требуется. Для всех остальных целей обслуживания базы данных SQL требуется разрешение VIEW DATABASE STATE в базе данных или членство в роли сервера ##MS_ServerStateReader##.
Разрешения для SQL Server 2022 и более поздних версий
Требуется разрешение VIEW SERVER PERFORMANCE 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 не отслеживает запросы на блокировку, предоставленные немедленно или не ожидая.
В следующей таблице содержатся краткие описания различных классов кратковременных блокировок.
| Класс кратковременных блокировок | Description |
|---|---|
| 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 | Используется для синхронизации доступа к файловой группе для операций добавления, удаления, увеличения и сжатия файлов. |
| 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 | Используется для синхронизации карты уровня экземпляра очередей ожидания. Одна очередь существует для каждого идентификатора базы данных, версии базы данных и кортежа идентификатора очереди. Конфликты на блокировках этого класса могут возникать, когда много подключений: в состоянии ожидания WAITFOR(RECEIVE); вызов WAITFOR(RECEIVE); превышено время ожидания WAITFOR; получение сообщения; фиксация или откат транзакции, содержащей WAITFOR(RECEIVE); Можно уменьшить количество потоков в состоянии ожидания WAITFOR(RECEIVE). |
| SERVICE_BROKER_WAITFOR_TRANSACTION_DATA | Только для внутреннего применения. |
| SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA | Только для внутреннего применения. |
| SERVICE_BROKER_TRANSPORT | Только для внутреннего применения. |
| SERVICE_BROKER_MIRROR_ROUTE | Только для внутреннего применения. |
| TRACE_ID | Только для внутреннего применения. |
| TRACE_AUDIT_ID | Только для внутреннего применения. |
| ТРАССИРОВКА | Только для внутреннего применения. |
| 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 | Только для внутреннего применения. |
Примечание.
В документации термин B-tree обычно используется в ссылке на индексы. В индексах rowstore ядро СУБД реализует дерево B+. Это не относится к индексам columnstore или индексам в таблицах, оптимизированных для памяти. Дополнительные сведения см. в руководстве по архитектуре и проектированию индексов SQL Sql Server и Azure.
См. также
DBCC SQLPERF (Transact-SQL)
Динамические административные представления операционной системы SQL Server (Transact-SQL)
SQL Server, объект Latches