SQLトレース

ttTraceMonをSQLコンポーネントで使用すると、TimesTenエンジンによって準備または実行されているSQLに関する情報が提供されます。表2-1に、SQLトレース・レベルを示します。「+」サインの付いた各レベルには、該当するレベルで説明されているトレース情報に加え、該当レベルより上のすべてのレベルの情報も含まれます。

表2-1 SQLトレース・レベル

レベル 出力

2

準備されているSQLコマンド

3

+ 実行中のSQLコマンド。

4

+ コマンドをプールする効果(準備されたコマンドはすでにプールに存在するため、準備は行われない)、再準備の必要性(索引が作成されたためなど)、および破棄されるコマンド

このレベルでは、ttTraceMon によって問合せコマンドのオープン、フェッチおよびクローズのタイミングも示されます。

5

+ コマンド番号などの内部データ(通常、ユーザー・レベルでのデバッグには役立ちません)

ノート:

SQLのトレースは、レベル3または4で実行することをお薦めします。SQLトレースでは、オプティマイザに関する情報は表示されません。オプティマイザのトレースは、レベル4で別のコンポーネント(OPT)によって管理され、ユーザーが使用するようには設計されていません。

この例では、database1データベースに対してSQLトレースをレベル4で実行するためにttTraceMonを実行します。SQLトレースの出力は、SQLtrace.txtファイルに書き込みます。その後、トレースで過去のSQL文がレポートされないようにバッファをフラッシュします。

% ttTraceMon database1
Trace monitor; empty line to exit
Trace > outfile SQLtrace.txt
Trace > level sql 4
Trace > flush

この時点で、次のSQL文を含むアプリケーションを実行します。

SELECT * FROM departments WHERE department_id = 10;

トレース情報がSQLtrace.txt ファイルに書き込まれます。

12:19:36.582     269 SQL      2L    3C  29570P Preparing: select * from 
departments where department_id = 10
12:19:36.583     270 SQL      4L    3C  29570P sbSqlCmdCompile ()(E): (Found 
already compiled version: refCount:01, bucket:28) cmdType:100, cmdNum:1000146.
12:19:36.583     271 SQL      4L    3C  29570P Opening: select * from departments
where department_id = 10;
12:19:36.583     272 SQL      4L    3C  29570P Fetching: select * from 
departments where department_id = 10;
12:19:36.583     273 SQL      4L    3C  29570P Closing: select * from departments
where department_id = 10;
5 records dumped

アプリケーションが完了したら、SQLトレースをオフにし、ttTraceMonを終了します。

Trace > level sql 0
Trace > {press ENTER – blank line}