Performance & Tuning


Exclusive Lock

排他ロックは、データベースの変更を行っている際に、ほかのユーザーからの変更を受け付けないようにアクセス制限することです。必要以上トランザクションを長くすると、長時間ロックされ、同時実行性が損なわれます。

現在ロックしているユーザーは Enterprise Manager の [管理] - [現在の利用状況] から確認できます。モードが X が排他を意味しています。sp_lock ストアドプロシージャでも確認できます。

デッドロック

デッドロックは複数のプロセスが同一資源に対してお互いに占有ロックを掛け合うことで待ち状態になり、処理が停止してしまうことです。SQL Server ではデッドロックを検出したら、後から来たプロセスを終了させ、一定時間後再実行します。

 

Performance Monitor

Windows のパフォーマンスモニタを使用すると、SQL Server のパフォーマンスや、リソース使用量、接続数などを調査することができます。

カウンタ 説明
Buffer Manager : Buffer Cache Hit Ration データバッファのヒット率。100% だとディスクからの読み取りはされていない。
Memory Manager : Total Server Memory SQL Server で使用している全メモリ容量

 

Transact-SQL

サーバーを監視するためのツール群です。

システムストアドプロシージャ

ストアドプロシージャ 概要
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 キャッシュ情報。

 

Profiler

SQL Server 利用状況をを監視できます。ログインの成功/不成功や、いつ誰が何をしたのかを収集できます。ネットワークモニタに近いイメージです。