sql >> データベース >  >> Database Tools >> SSMS

ManagementStudioとプロファイラーでのクエリ実行時間。それは何を測定しますか?

    私があなたの質問を正しく理解している場合、あなたは最初にプロファイラーによって報告された期間とSSMSで提示された統計(一般的な時間の右下隅および/またはSET STATISTICS TIMEONのいずれか)の違いを質問しています。それに加えて、ビューが予想される60秒以内に実行されているという本番DBAのコメントに納得していないようです。

    まず、Books Onlineから、SSMSがSET STATISTICS TIMEONを介して報告する統計情報:

    「各ステートメントの解析、コンパイル、および実行に必要なミリ秒数を表示します。」

    あなたはこれにスポットを当てています。 Profilerの期間については、次のように記述されます。

    「イベントの継続時間(マイクロ秒単位)。」

    私が座っているところから、これら2つは機能的に同等であるはずです(そして、あなたが気づいたと思いますが、SQL 2005以降に反対する場合、Profilerはマイクロ秒単位で報告します)。この場合の「イベント」(プロファイラーの期間に関する)は、クライアントへの配信を含む選択の実行であるため、これを言います。これはどちらの場合も一貫しています。

    クエリをリモートで実行する場合、地理が長期間の原因であると思われるようです。これは非常にうまくいくかもしれません。これをテストするには、1つのクエリウィンドウのビューでselectを実行してから、別のクエリウィンドウを生成し、クエリの待機タイプを確認します。

    select
        a.session_id
        ,a.start_time
        ,a.status
        ,a.command
        ,db_name(a.database_id) as database_name
        ,a.blocking_session_id
        ,a.wait_type
        ,a.wait_time
        ,a.cpu_time
        ,a.total_elapsed_time
        ,b.text
    from sys.dm_exec_requests a
        cross apply sys.dm_exec_sql_text(a.sql_handle) b
    where a.session_id != @@spid;
    

    地理が問題である場合は、待機タイプとしてASYNC_NETWORK_IOのようなものが表示されると思います。それ以外の場合は、これから何が起こるかを確認してください。リモート実行のクエリをプロファイリングしている場合、期間はSSMSに表示される時間統計を反映します。ただし、プロファイラーを使用していて、このクエリの期間がWebサーバーの1つから実行された場合であることがわかった場合 SQL Serverと同じデータセンターにあるものはまだ7分かかりますが、DBAは大きくて太った嘘つきです:)。プロファイラーを使用して、1分以上かかるクエリを記録し、ビューをフィルタリングして、平均を取り、パフォーマンスの目標を達成しているかどうかを確認します。

    他に回答が投稿されていないので、ここでベースから離れているのではないかと心配していますが、遅く、これは初めてなので、やってみようと思いました!



    1. phpMyAdminのCSVでテーブルをインポート/置換する際の問題:1行目のCSV入力の列数が無効です

    2. SQLIntellisenseに現在のデータベースを認識させる

    3. SSMSでは機能するがSSRSでは機能しないパラメーター

    4. 結合されたクエリで結合を実行する