SQLServer データベース開発に重要なSQLチューニングはSQLキャッチから

公開日    更新日 
 株式会社システムインテグレータ

アプリケーションなどから実行されるSQLを、キャッチ・トレースできたら素敵ですよね。

もちろん、SI Object Browserでは「SQLキャッチ」機能があるので実現できます。

今回は「SQLキャッチ」機能と、そこからSQLチューニングをする方法をご紹介します。

SQLキャッチの使い方

今回は「SI Object Browser for SQLServer」を使用しています。
もちろん「SI Object Browser for Oracle」でも同様に使えますが、
SQLServerでも便利な使い方ができるというところをお見せします。

それではさっそくお見せ、
したいところですが、実行前にいくつか注意事項があります。

注意事項

【実行ユーザーの権限に注意】
★SQLキャッチの開始/停止を行う場合は、データベースのトレース機能を実行できる権限をユーザーに付与しましょう。

SQLキャッチはデータベースのトレース機能を使用し、以下の命令を実行しています。
そのため、これらを実行できる権限を持つユーザーのみ、SQLキャッチの開始/停止を行うことができます。
(なお、結果の表示にはトレースログの参照のみ行うため、この権限は必要ありません。)

<SI Object Browser for SQLServerの場合>
ALTER TRACE 権限が必要
トレースの作成 : SP_TRACE_CREATE
トレースの定義 : SP_TRACE_SETEVENT
トレースの実行 : SP_TRACE_SETSTATUS

<SI Object Browser for Oracleの場合>
ALTER SYSTEM 権限が必要
全セッションをトレース : ALTER SYSTEM SET SQL_TRACE
セッション別にトレース : SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION

【リモート接続時の注意】

★サーバー側からトレースログをコピーしてきて結果を表示しましょう。

SQLキャッチは、結果の表示にサーバー側に出力されるトレースログを参照するため、サーバー側で実行することを前提としています。
クライアント側からリモート接続する場合、サーバー側からトレースログをコピーしてくることでも参照できます。
(SQLキャッチの開始/停止は、サーバー側とクライアント側で同様に行えます。)

★SI Object Browser for SQLServerの場合は、トレースログフォルダの指定はサーバー側のフォルダ構成と合わせて指定しましょう。

SI Object Browser for SQLServerの場合は、トレースログフォルダの指定をSQLキャッチ開始時のパラメータとして使用しています。
そのため、指定したトレースログフォルダがサーバー側に無いとエラーになります。
クライアント側からリモート接続する場合、トレースログフォルダの指定はサーバー側のフォルダ構成と合わせて指定することで、SQLキャッチを開始できます。

長々と注意事項をお話してきましたが、ここからSQLキャッチを使っていきましょう。

SQLキャッチを実行する

SQLキャッチ画面からトレースを開始すれば、実行されたSQLを確認することができます。
まずは、メニューの「ツール」→「SQLキャッチ」で画面を表示します。

SQLServer データベース開発に重要なSQLチューニングはSQLキャッチから 1

初回起動時やトレースログフォルダが見つからない場合は、フォルダの指定が促されます。
SQLServerのトレースログフォルダを指定しましょう。
※今回はサーバー側で実行していますが、リモート接続の場合は上記の注意事項を参照。

SQLServer データベース開発に重要なSQLチューニングはSQLキャッチから 2

トレースログフォルダの指定が済んだら、さっそく「開始」しましょう。

SQLServer データベース開発に重要なSQLチューニングはSQLキャッチから 3

今回はSI Object Browser自身からSQL実行をしてみます。

SQLServer データベース開発に重要なSQLチューニングはSQLキャッチから 4

さて、SQLキャッチ画面でトレースできているでしょうか。
SQLキャッチ画面で「表示」をクリックしてみます。(トレースを止めたい場合は「停止」)

SQLServer データベース開発に重要なSQLチューニングはSQLキャッチから 5

実行したSQLが表示されました。トレース成功です。
しかしここで終わりではありません。対象の行を右クリックをすると・・・

舞台はSQLチューニングへ

SQLServer データベース開発に重要なSQLチューニングはSQLキャッチから 6

ここから「実行計画」の表示、「SQL文をコピー」、「インデックスアドバイザ」の表示ができるんです。
ということはSQLキャッチから続けてSQLチューニングもできるということです。

もし
・開発しているアプリケーションの動作が遅く、実行SQLに問題がありそう・・・
・でも実際に実行されているSQLの詳細は分からない・・・
といったときは、
1.SQLキャッチで実際に実行されているSQLを特定する。
2.SQL実行画面から実行計画を確認して原因を突き止める。
3.インデックスアドバイザで適切なインデックスを確認する。
というアプローチをしてみてはいかがでしょうか。

実行計画やインデックスアドバイザの使い方については、また改めて書いていきたいと思います。

今回の対象ツール(バージョン)

SI Object Browser for SQLServer Ver.3.0.0
SI Object Browser for Oracle Ver13.1.0.0


この記事の執筆・監修者

RELATED POST関連記事


RECENT POST「データベース」の最新記事


データベース

Oracle SQL*Plusとは?基本や利用できるコマンドや使い方について

データベース

Oracle 動的SQLをOBで実行してみよう

データベース

PL/SQL入門 ~概要から変数や処理の書き方を解説~

データベース

SQL*Loaderとは?基本的な使い方からオプションまで解説

新規CTA