TECHNOLOGY
FAQ (よくある質問)
QUESTION ( SQ0902083 )
ISQLからクエリを実行した際に表示される実行時間が正確ではない
ANSWER
クエリ単体の厳密な実行時間を確認する場合は、パフォーマンス・テスト・ユーティリティを使用することをお勧めします。
SELECT文の実行時間を確認する場合、FETCHTSTを使用します。
FETCHTST は、SQL AnywhereのSamplesフォルダ内の以下の場所にあります。
SA11 : SamplesSQLAnywherePerformanceFetch
SA10 : SamplesSQLAnywherePerformanceFetch
ASA9 : SamplesASAPerformanceFetch
実行例
>fetchtst.exe -c “uid=dba;pwd=sql;eng=demo10″ query1.sql
実行結果の例 |
Statement 1 (line 1): SELECT i.ID,i.LineID,i.ProductID,i.Quantity, … Rows fetched = 1000 PREPARE: 0.000 seconds DESCRIBE: 0.000 seconds OPEN: 0.002 seconds FETCH first row: 0.050 seconds, 31 I/Os, 618 per second FETCH remaining rows: 0.019 seconds CLOSE: 0.000 seconds DROP: 0.000 seconds Total: 0.072 seconds, 31 I/Os, 427 per second Fetch rate: 1097 rows in 0.070 seconds, 15775.663 per second |
基本的には上の結果から次の4点を確認します。
OPEN: カーソルのオープンにかかった時間
FETCH first row: 最初のローのフェッチ時間
FETCH remaining rows: 残りのローのフェッチ時間
Total: 全体の処理時間
パフォーマンス・テスト・ユーティリティの詳細につきましては、ユーティリティ付属のreadme.txtをご参照下さい。
【注意】
一度クエリを実行すると、そのクエリで使用されたデータがデータベース・サーバ・キャッシュにキャッシュされることに注意してください。
テーブルなどのデータがデータベース・サーバ・キャッシュされている状態でクエリを実行した場合、初回の実行時間とは大幅に異なる結果が得られることがあります。
この為、連続してパフォーマンスのテストを行う場合は、データベース・サーバ・キャッシュを明示的にクリアしてください。
キャッシュをクリアするには、sa_flush_cache システム・プロシージャを使用します。
実行例
call sa_flush_cache()
sa_flush_cache システム・プロシージャの詳細につきましては、以下のオンライン・マニュアルをご参照下さい。
http://www.ianywhere.com/developer/product_manuals/sqlanywhere/1001/ja/html/dbrfja10/rf-sa-flush-cache-system-sysproc.html/rf-sa-flush-cache-system-sysproc.html