SQLトレース
ttTraceMonをSQLコンポーネントで使用すると、TimesTenエンジンによって準備または実行されているSQLに関する情報が提供されます。表2-1に、SQLトレース・レベルを示します。「+」サインの付いた各レベルには、該当するレベルで説明されているトレース情報に加え、該当レベルより上のすべてのレベルの情報も含まれます。
表2-1 SQLトレース・レベル
| レベル | 出力 |
|---|---|
|
2 |
準備されているSQLコマンド |
|
3 |
+ 実行中のSQLコマンド。 |
|
4 |
+ コマンドをプールする効果(準備されたコマンドはすでにプールに存在するため、準備は行われない)、再準備の必要性(索引が作成されたためなど)、および破棄されるコマンド このレベルでは、 |
|
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}