Symfoware ServerのSQL_SNAPとSQL_TRACEによるSQL実行時間の差について
- SQL実行時間を調査するために、SQL_SNAPとSQL_TRACEを取得しました。しかし、同じSQL文なのに実行時間に差があります。これはなぜですか?
- SQL_TRACEのとSQL_SNAPでは所要時間を集計している処理の範囲が異なるためです。
アプリケーションからSQL文を実行すると、以下のように処理が行われます。
-
アプリケーションからSymfoware Serverに要求が送信される。
-
Symfoware ServerがSQLの処理を行う。
-
Symfoware Serverからアプリケーションに結果が送信される。
SQL_SNAPで実行時間として集計される範囲は、上記の1.2.3.のすべてです。一方、SQL_TRACEで実行時間として集計される範囲は、上記の2.だけです。
このため、同じSQL文でもSQL_TRACEとSQL_SNAPでは、処理時間が異なる結果になります。また、SQL文の実行時に以下のような影響を受けると、同一のSQL文であっても処理時間が異なる場合があります。
-
排他待ちが発生していた場合
-
対象のデータが共用バッファになく、ディスクI/O を必要とした場合
-
データ件数やアクセス件数が異なる場合
-
最適化情報などが変わり、異なるアクセスプランで動作した場合
-
サーバが高負荷状態であった場合
-
製品・サービス区分 | Symfoware | ||||
---|---|---|---|---|---|
製品・サービス情報 |
|
||||
アンサー種別 | 技術サポート |