共用方式為


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 可以檢查不同閂鎖類別的相對等候時間和等候次數,來識別閂鎖爭用的來源。某些情況下,您或許可以解決或減少閂鎖爭用的狀況。不過有些時候您可能還是必須連絡 Microsoft 客戶支援服務部門。

您可以利用 DBCC SQLPERF 重設 sys.dm_os_latch_stats 的內容,如下所示:

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

此舉會將所有的計數器重設為 0。

[!附註]

如果重新啟動 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

利用堆積和二進位大型物件 (BLOB) 的可用空間,同步處理資料頁面快取的存取作業。如果有多個連接同時將資料列插入堆積或 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

用來同步處理內部 B 型樹狀目錄所擷取之根頁面的存取作業。

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

用來同步處理備份效能監視器計數器之執行個體識別碼的產生作業。

BACKUP_MANAGER

用來同步處理內部備份管理員。

BACKUP_MANAGER_DIFFERENTIAL

用來同步處理差異備份作業與 DBCC。

BACKUP_OPERATION

用來同步處理備份作業 (例如資料庫、記錄或檔案備份) 內的內部資料結構。

BACKUP_FILE_HANDLE

在還原作業期間,用來同步處理檔案開啟作業。

BUFFER

用來同步處理對資料庫頁面的短期存取作業。在讀取或修改任何資料庫頁面之前,必須具備緩衝區閂鎖。緩衝區閂鎖爭用會指出幾個問題,包括頁面使用頻繁和 I/O 速度緩慢。

這個閂鎖類別涵蓋了所有可能的頁面閂鎖用途。sys.dm_os_wait_stats 讓該頁面之 I/O 作業和讀寫作業所導致的頁面閂鎖等候不同。

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

僅供內部使用。