sys.dm_os_latch_stats

更新 : 2006 年 7 月 17 日

すべてのラッチ待機に関する情報を、クラスごとに返します。

列名

データ型

説明

latch_class

nvarchar(120)

ラッチ クラスの名前。

waiting_requests_count

bigint

クラス内のラッチに対する待機数。このカウンタは、ラッチ待機の開始時に増加します。

wait_time_ms

bigint

クラス内のラッチに対する合計待機時間 (ミリ秒単位)。

ms175066.note(ja-jp,SQL.90).gifメモ :

この列は、ラッチの待機中、5 分ごとに更新されます。またラッチ待機の終了時にも更新されます。

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 にリセットします。

ms175066.note(ja-jp,SQL.90).gifメモ :
これらの統計は、SQL Server が再起動されると保存されません。すべてのデータは、統計を最後にリセットした後に累積したものか、SQL Server の起動後に累積したものです。

ラッチ

ラッチとは、さまざまな SQL Server コンポーネントで使用される軽量の同期オブジェクトです。ラッチは、主にデータベース ページを同期するために使用されます。各ラッチは、1 つのアロケーション ユニットに関連付けられています。

ラッチが別のスレッドによって、競合するモードで保持されており、ラッチ要求がすぐに許可されない場合は、ラッチ待機が発生します。ロックと異なり、ラッチは操作後すぐに解放されます。書き込み操作の場合でも同様です。

ラッチは、コンポーネントと使用方法に基づいて複数のクラスに分類されます。特定クラスのラッチは、SQL Server インスタンス内に、任意の時点でいくつでも存在できます。

ms175066.note(ja-jp,SQL.90).gifメモ :
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-Tree のルート ページの抽象化に対するアクセスを同期するために使用します。

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

データベース ページへの短時間アクセスを同期するために使用します。いずれのデータベース ページを読み取りまたは修正する場合も、事前にバッファ ラッチが必要です。バッファ ラッチの競合によって、ホット ページや低速な 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_READONOY

内部使用のみ。

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)
動的管理ビューと動的管理関数
SQL Server オペレーティング システム関連の動的管理ビュー

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

変更内容 :
  • latch_class 列のデータ型を nvarchar(60) から nvarchar(120) に変更しました。