SQL Server 遅いクエリの特定
MySQLなんかだと
slow_query_log=ON
slow_query_log_file=/var/lib/mysql/mysql-slow.log
long_query_time=5
とかで分かるのですが、SQL Server の場合のやり方を知らなかったのでメモします。環境が SQL Server 2000 なので参考にならないかもしれませんが、取り敢えず。
スタートメニューから「Microsoft SQL Server」→「プロファイラ」を順に選びます。
メニュー「ファイル」→「新規追加」→「トレース」を順に選びます。
「SQL Server の接続」ダイアログで接続対象や認証情報を入れて「OK」ボタン。
「トレース プロパティ」ダイアログで
【全般】
トレース名:お好きな名前をどうぞ
テンプレート名:SQLProfilerTSQL_Duration
【イベント】はそのまま
【データ列】
StartTime、EndTime、HostNameを追加しておくと便利
【フィルタ】
「Duration」→「Greater than or equal」にミリ秒を入れる
(例:3秒以上かかるものを対象とするなら3000)
で、「実行」ボタン。
これでリストに表示される。CSV出力ができないしカラムでソートできないのでリスト選択してコピー、エクセルにペーストしてフィルタかけるなりして閲覧した方が良いかもしれません。
最新の SQL Server はこの辺りどうなんでしょうかね、きっと便利になっているのでしょう。
トレースが終わったらツールバーの所にある停止を押して止めましょう。それなりに負荷をかけるでしょうから、必要最小限に留めたいですね。
著者:t.n