適用対象: SQL Server
Microsoft SQL Server の SQLServer:Locks オブジェクトは、各リソースの種類に対する SQL Server ロックに関する情報を提供します。 ロックは、複数のトランザクションで同じ SQL Server リソースが同時に使用されるのを防ぐために、トランザクション中に読み取られたり変更されたりする行などにかけられます。 たとえば、あるトランザクションによってテーブルの行に排他 (X) ロックがかけられると、他のトランザクションはロックが解除されるまでその行を変更できません。 ロックを最小限にとどめるとコンカレンシーが向上し、パフォーマンスが向上します。 異なる種類のリソースのロックを表す複数の Locks オブジェクトのインスタンスを同時に監視することができます。
次の表では、SQL Server Locks カウンターについて説明します。
| SQL Server:Locks カウンター | 説明 |
|---|---|
| Average Wait Time (ms) | 待つ必要がある各ロック要求の平均待ち時間 (ミリ秒)。 |
| Average Wait Time Base | 内部使用のみ。 |
| Lock Requests/sec | ロック マネージャーから 1 秒あたりに要求された新しいロックと、ロック変換の数。 |
| Lock Timeouts (timeout > 0)/sec | NOWAIT ロックの要求を除く、1 秒あたりにタイムアウトしたロック要求の数。 |
| Lock Timeouts/sec | NOWAIT ロックの要求を含めた、1 秒あたりにタイムアウトしたロック要求の数。 |
| Lock Wait Time (ms) | 最後の 1 秒間のロックの総待機時間 (ミリ秒)。 |
| Lock Waits/sec | 呼び出し元が待つ必要のあった 1 秒あたりのロック要求の数。 |
| Number of Deadlocks/sec | デッドロックが発生した 1 秒あたりのロック要求の数。 |
QL Server では、以下のリソースをロックできます。
| アイテム | 説明 |
|---|---|
| _Total | すべてのロックに関する情報。 |
| AllocUnit | アロケーション ユニットのロック。 |
| Application | アプリケーションで指定されているリソースのロック。 |
| データベース | データベース内のすべてのオブジェクトを含むデータベースのロック。 |
| Extent | 連続した 8 ページのグループのロック。 |
| ファイル | データベース ファイルのロック。 |
| ヒープ/B ツリー | ヒープまたは B ツリー。 データ ページのヒープまたはインデックスの B ツリー構造のロック。 |
| Key | インデックスの行のロック。 |
| Metadata | カタログ情報 (メタデータ) のロック。 |
| Object | すべてのデータとインデックスを含む、テーブル、ストアド プロシージャ、ビューなどのロック。 オブジェクトには、 sys.all_objectsにエントリを含む任意のオブジェクトを指定できます。 |
| OIB | オンライン インデックス ビルド LOB 追跡テーブルを特に対象とした、オンライン インデックス ビルド ロックのロック リソース。 |
| ページ | データベース内の 8 KB のページのロック。 |
| RID | 行 ID。 ヒープ内の単一行のロック。 |
| RowGroup | 列ストア インデックスの行グループのロック リソース。 |
| Xact | トランザクションのロック リソース。 |
Note
ドキュメントでは、一般的にインデックスに関して B ツリーという用語が使用されます。 行ストア インデックスで、データベース エンジンによって B+ ツリーが実装されます。 これは、列ストア インデックスやメモリ最適化テーブルのインデックスには適用されません。 詳細については、「SQL Server と Azure SQL のインデックスのアーキテクチャとデザイン ガイド」を参照してください。
例
sys.dm_os_performance_counters の動的管理ビューで次の T-SQL クエリを使用して、このオブジェクトのクエリ パフォーマンス カウンターの確認を開始します。
SELECT * FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%Locks%';