この特集のトップページへ


・sp_whoシステムストアドプロシージャによるロックの状況確認
 sp_whoシステムストアドプロシージャを利用すると,どのプロセスがリソースをブロックしているのかを調べることができる。

Fig.9-43 sp_whoシステムストアドプロシージャの実行例

 blkデータ列に表示されている値は,そのプロセスがブロックしているプロセスIDを示す(0の場合はブロックしていないことを表す)。

Table 9-3 sp_whoシステムストアドプロシージャで出力されるデータ列

列名 解説
spid サーバープロセスID
status プロセスの状態を示す
 sleeping:現在停止していることを示す
 runnable:実行可能状態にあることを示す
loginame ログインIDを示す
hostname ホスト名を示す
blk このプロセスがブロックしているプロセスIDを示す
abname データベース名を示す
cmd 実行中のコマンド,スレッド名,コマンド待ち状態などを示す

・SQL Server Enterprise Managerによるロック状況の確認
 SQL Server Enterprise Managerを利用してブロックの状況を確認するには,コンソールツリーから[管理]−[現在の利用状況]を開く。オブジェクトから調べる場合には,[ロック/オブジェクト]を,プロセスから調べる場合には[ロック/プロセスID]を,それぞれクリックする。まず,[状態]列で状態が「WAIT」または「CNVT」になっているオブジェクトあるいはプロセスを探し,該当するものがあれば,さらにほかのデータ列を調べてロックを保持しているプロセスを探す。

Fig.9-44 SQL Server Enterprise Manager

(ロック/オブジェクト)  [ロック/オブジェクト]で示される情報は,次のとおりである([ロック/プロセスID]の場合も,オブジェクトの代わりにプロセスIDをキーとして選択するだけで,同じ情報が表示される)。

Table 9-4 [ロック/オブジェクト]で表示される情報

列名 説明
SPID サーバープロセスID
ロックの種類 ロックの単位を示す。RIDは行を,KEYはインデックス内の行を,PAGはデータページまたはインデックスページを,EXTはエクステントを,TABはすべてのデータとインデックスを含むテーブル全体を,DBはデータベースを,それぞれロックしていることを示している
モード ロックのモードを示す。Shared(S)は共有ロックを,Update(U)は更新ロックを,Exclusive(X)は排他ロックを,Intentはインテントロックを,Schemaはスキーマロックを,Bulk Update(BU)はデータをテーブルに一括コピーするときにTABLOCKヒントが指定されているときのロックを,それぞれ示している
状態 ロックの状態を示す。GRANTはロックが正常に取得されたことを,WAITはロックは別のプロセスによってブロックされているためにその解放を待っていることを,CNVTは要求したロックが別のロック(より強力なロックモード,たとえば,更新ロックや排他ロックなど)に変換されて取得されるのを待っていることを,それぞれ示す
所有者 ロックの所有者を,Xact(トランザクション),Sess(セッション),Curs(カーソル)のどれかで示す
インデックス リソースのインデックスを示す。インデックスがクラスタ化されている場合はテーブル名が表示される
リソース ロックしているリソースを示す。RIDはテーブル内でロックされている行をfileid:page:ridの組み合わせで,KEYはインデックス内の行を16進数で,PAGはロックされているページをfileid:pageの組み合わせで,EXTはロックされるエクステント内の開始ページ番号をfileid:pageの組み合わせで,それぞれ示す。[ロックの種類]がTABおよびDBの場合,別のデータ列で示されているので表示されない

 ・パフォーマンスモニタによるロック状況の確認
 ロックの状況は,パフォーマンスモニタでSQLServer:Locksオブジェクトを使用しても監視することができる。データベース(Database),テーブル(Table),エクステント(Extent),ページ(Page),キー(Key),行識別子(RID)という各インスタンスに対して,ロックの平均待機時間(Average Wait Time(ms)),ロックの待機時間(Lock Wait Time(ms)),ロックの待機数(Lock Waits/sec),ロックの要求数(Lock Requests/sec),ロックのタイムアウト数(Lock Timeouts/sec),デッドロック数(Number of Deadlocks/sec)を調査するためのカウンタが用意されている。  パフォーマンスモニタを利用するには,[スタート]メニューから[プログラム]−[SQL Server 7.0]−[パフォーマンスモニタ]を選択すればよい。使い方は,Windows NTのパフォーマンスモニタと変わらない。

Fig.9-45 パフォーマンスモニタによるロックの監視


前へ Chapter 9 23/46 次へ