- PR -

クエリアナライザのトレースについて

1
投稿者投稿内容
ともこ
大ベテラン
会議室デビュー日: 2007/09/14
投稿数: 111
投稿日時: 2007-12-01 12:53
いつもお世話になります。

SQLServer2000のクエリアナライザにて、ストアドプロシージャを実行した際に表示されるトレースについて質問があります。

ストアドプロシージャ@とストアドプロシージャAをそれぞれ実行した結果、下記のようにトレースが表示されました。またストアドの中身は以下になります。

■トレース結果
 TEXT     EventClass    Duration   CPU
-------------------------------------------------------
@SQL文〜   SP:StmtCompleted  93      47
 ストアド名  SQL:StmtCompleted  93      47
-------------------------------------------------------
ASQL文〜   SP:StmtCompleted  90      78
 ストアド名  SQL:StmtCompleted  22      109

■ストアド詳細
ストアド@
 SELECT * From ビューA
 (ビューA:SELECT * FROM OPENQUERY(サーバー名,'SELECT * FROM データベース名.テーブル名))
ストアドA
 SELECT * From OPENQUERY(サーバー名,'SELECT * FROM データベース名.テーブル名))

質問1.
 @、Aともそれぞれ2行の結果が返されています。両方のDurationの合計値がストアドプロシージャの実行にかかった時間と言うことで宜しいのでしょうか?
 → @のストアド(93+93=186)、Aのストアド(90+22=112)でAの方が処理が早い?

質問2.
 @とAではAの方がCPUの数値が高い為、処理速度が遅くても@を使用した方がサーバーへの負荷が少なく他の処理に影響を与えないと言うことでしょうか?

トレースやプロファイラについてご存知の方がおられましたら、アドバイスをお願いします。
ラララ
ベテラン
会議室デビュー日: 2004/02/04
投稿数: 66
投稿日時: 2007-12-02 01:18
「SQL文」と「ストアド名」の記述が逆で間違いですよね?

合計ではなく、Aのケースだと、ストアドが90マイクロ秒かかっており、
そのストアドの中で実行されているSQLが22マイクロ秒となります。

@とAの比較ということですが、誤差の範囲(マシンの状況により
変動してしまう範囲)かもしれません。

ストアドが何をしているのか分からないですが、仮に、ストアド詳細の
ところに書いてある2つのSQLの実行効率を比較したいということで
あれば、今回の場合、プロファイラではなく、実行計画で比較した方が
良いかもしれません。
1

スキルアップ/キャリアアップ(JOB@IT)