ここではトレースファイルの味方について説明します。
tkprofコマンドによって作成されたトレースファイルにはSQLごとに下表のような情報が表示されます。
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.33 1.17 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 2.12 5.23 13734 27468 0 2
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 2.45 6.40 13734 27468 0 2
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 44
上表を例に列ごとに説明しますと、countはそれぞれ解析、実行、フェッチのカウントを表示しています。
cpuはそれぞれ解析、実行、フェッチにcpuが使用された時間を表示しています。
elapsedはそれぞれ解析、実行、フェッチに要した経過時間を表示しています。
cpu,elapsedで重要なのは、cpuの割にelapsedが異常に長い場合、待機が多いことが考えられるということです。
また、解析に異常に時間が掛かっている場合、SQLの複雑さも関係しますが、共有プールのサイズが適切なサイズではないことが考えられます。
diskはそのままディスクから読み込んだブロック数を表示しています。ディスクから読み込むのは時間が掛かるためこの数値が大きいのはよくありません。5桁以上は要注意です。
queryはバッファキャッシュから読み込んだブロック数です。これはメモリのため、高速ですが、5桁以上は要注意です。
currentは更新時にバッファキャッシュにアクセスした場合のみ表示されます。問合せの場合は通常は0ですが、稀に0にならない場合もあるようです。
disk,query,currentで重要なのは、query,currentの割にdiskが大きい場合、バッファキャッシュが有効活用できていないことが考えられます。
最後にrowsですが、これは問合せの行数を表示しています。更新系の場合は、Executeの欄に更新系の件数が表示されます。