排他ロックは、データベースの変更を行っている際に、ほかのユーザーからの変更を受け付けないようにアクセス制限することです。必要以上トランザクションを長くすると、長時間ロックされ、同時実行性が損なわれます。
現在ロックしているユーザーは Enterprise Manager の [管理] - [現在の利用状況] から確認できます。モードが X が排他を意味しています。sp_lock ストアドプロシージャでも確認できます。
デッドロック
デッドロックは複数のプロセスが同一資源に対してお互いに占有ロックを掛け合うことで待ち状態になり、処理が停止してしまうことです。SQL Server ではデッドロックを検出したら、後から来たプロセスを終了させ、一定時間後再実行します。
Windows のパフォーマンスモニタを使用すると、SQL Server のパフォーマンスや、リソース使用量、接続数などを調査することができます。
カウンタ | 説明 |
Buffer Manager : Buffer Cache Hit Ration | データバッファのヒット率。100% だとディスクからの読み取りはされていない。 |
Memory Manager : Total Server Memory | SQL Server で使用している全メモリ容量 |
サーバーを監視するためのツール群です。
システムストアドプロシージャ
ストアドプロシージャ | 概要 |
sp_who | 接続しているユーザーとプロセス。 |
sp_lock | アクティブロック、ブロック、デッドロック情報。 |
sp_spaceused | テーブルやデータベースの使用しているディスク領域。 |
sp_helpdb | データベースおよびオブジェクト。 |
sp_monitor | 統計情報。処理時間、読み取り書き込み数、接続数など。 |
sp_helpindex | インデックス情報。 |
sp_statistics | 特定のテーブル上のすべてのインデックス。 |
グローバル変数
変数 | 概要 |
@@connection | SQL Server が起動してからのログイン数、および試行回数。 |
@@error | 最後に発生した T-SQL のエラー番号。 |
@@spid | ユーザープロセスのサーバープロセス ID。sp_who と組み合わせてユーザーが識別できる。 |
@@procid | 現在のストアドプロシージャ ID。 |
ステートメント
ステートメント | 概要 |
set statistics IO | ディスクアクティビティの情報。ディスクから読み取ったページ数。 |
set statistics time | 実行秒数。 |
set statistics profile | クエリの実行プロファイルをあらわす結果セットの表示。 |
set showplan_text | ステートメント実行方法の詳細情報。 |
DBCC ステートメント
ステートメント | 概要 |
SQLPERF | トランザクションログ、メモリキャッシュなどの利用状況など。 |
OPENTRAN | 最も古いトランザクション。 |
SHOW_STATISTICS | インデックス選択情報。 |
CHECKDB | データベース内のオブジェクトの割り当て、構造の一貫性情報。 |
CHECKFILEGROUP | ファイルグループ内のオブジェクトの割り当て、構造の一貫性情報。 |
CHECKTABLE | テーブル内のオブジェクトの割り当て、構造の一貫性情報。 |
隠しコマンド
エクステント情報の確認。
DBCC EXTENTINFO('DBName', 'TableName', IndexID )
テーブル
テーブル | 概要 |
syscacheobjects | キャッシュ情報。 |
SQL Server 利用状況をを監視できます。ログインの成功/不成功や、いつ誰が何をしたのかを収集できます。ネットワークモニタに近いイメージです。