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

 2017.04.13  株式会社システムインテグレータ

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

もちろん、SI Object Browserでは「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キャッチを使っていきましょう。 [RELATED_POSTS]

SQLキャッチを実行する

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

494-1.png

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

494-0.png

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

494-2.png

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

494-3_1.png

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

494-5.png

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

舞台はSQLチューニングへ

494-5-1.png

ここから「実行計画」の表示、「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

いまさら聞けない Oracleの基本

新規CTA
新規CTA

RELATED POST関連記事


RECENT POST「OBをトコトン極める」の最新記事


この記事が気に入ったらいいねしよう!
OBトライアル
ブログ購読のお申込み

RANKING人気資料ランキング

RANKING人気記事ランキング

RECENT POST 最新記事