web-dev-qa-db-ja.com

待機をプロセス/ステートメントにリンクする

私はより多くのDBAの役割を引き受け始めており、これを支援するためのスクリプトと知識を身に付けようとしています。

私は開発環境でsp_bliztプロシージャを試してきました。私が焦点を当てようとしている重要な領域は、待機を理解することです。

私の質問は、待機のリストが表示されたときに、それらを引き起こしているproc/queryにどのように関連付けるのですか?

例えば。 asyn_network_ioが表示された場合、これを引き起こしているクライアントアプリと、これを引き起こしているときに実行されているものをどのように表示できますか?

2
BeginnerDBADan

私の質問は、待機のリストが表示されたときに、それらを引き起こしているproc/queryにどのように関連付けるのですか?

一般的に言えば、できません。別の回答へのコメントで、監視ツールが待機統計の急増を示していると述べています。監視ツールがリソースの急増をその時点で実行されていたものと関連付けることができない場合は、監視ツールが不良です。

それを簡単にするツールには、

すでにこれらのいずれかを使用していて苦労している場合は、ベンダーの担当者との電話をスケジュールして、製品について説明する必要があります。

また、ほとんどのスクリプトを使用して、後で何が起こったのかを理解することはできません。それらが起こっている間、あなたは物事を捕まえなければなりません。それを行うためのいくつかの簡単な方法(無料):

SQL Server 2017以降を使用していて、 クエリストア が有効になっている場合は、 集計された待機統計を追跡 になります。

ただし、これらのことを追跡するのはあなた次第です。

頑張ってください!

2
Erik Darling

Async_network_ioに関するいくつかの注意事項が待機します。これらが一般的にポップアップするのを私が見るいくつかのシナリオがあります:

  • 大きなデータセットを返すクエリ
  • クライアント側のリソースの制約/遅いクライアントアプリケーション
  • MSAccessアプリケーション
  • ネットワークの問題(TCP再送信、高いパケット遅延)

非常に大きなデータセットを返すクエリでは、特に低速のネットワークでこれが表示される可能性があります。

100%CPUに制約されているクライアント、またはその他のパフォーマンスの低下が発生しているクライアントは、これをデータベースに表示する可能性があります。 SQLを呼び出すクライアントに問題があるかどうかを必ず確認してください。問題はSQLServerではなく、クライアントにある可能性があります。

MS Accessアプリケーションは、この待機イベントを表面化する傾向があります。 Accessで遊んでからしばらく経ちましたが、データをページ分割するコントロールのいくつかがクエリを開始することを正しく覚えていれば、すべての結果をすぐに消費するわけではありません。代わりに、ページをめくるときに結果が消費されます。

ネットワークの遅延、エラー(つまり再送信)により、これが表面化します。 VPNを介してデータを照会する場合、これはこの待機のもう1つの一般的な原因です。

私はこれを使って私たちの製品を甘やかすのは嫌いですが、上記の2つの異なるアプローチについて話し合っており、2つを1つのツールに結び付けているので、言及する価値があると思います。

Sp_whoisactiveを使用すると、クエリをアクティブに実行しているユーザーの現在の時点がわかります。 sentryoneやspotlightなどのツールは、過去にクエリの待機統計を収集します。 2つのアプローチを1つにまとめました。クエリレベルの待機統計を履歴的に収集しますが、サンプルセッションアクティビティ(sp_whoisactiveと同様)を履歴に保存して、async_network_io_waitを経験したクエリに関連付けられたセッションを確認し、のすべての詳細(プログラム名、ユーザーなど)を確認できるようにします。 1秒ごとに行われるセッション。 SQLGrease の完全無料バージョンがあり、スパムやマーケティングをせずに問題のトラブルシューティングに使用できます。

0
Sqlgrease

Sp_blitzを使用しているので、Brentのサイト自体の情報は非常に役立ち、うまくいくはずです https://www.brentozar.com/sql/wait-stats/

上記に加えて、ポールによる豊富な情報があります https://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/ これでトップウェイトが表示されます

待機はトラブルシューティングを開始するための良いポイントですが、待機統計データがより詳細であるほど集計がはるかに優れているため、収集されるデータが重要であるため、パフォーマンスの問題があることを意味するわけではありません。

例えば

。 asyn_network_ioが表示された場合、これを引き起こしているクライアントアプリと、これを引き起こしているときに実行されているものをどのように表示できますか?

はい、Adam Mechanicによって作成されたsp_bltzwhoまたはsp_whoisactiveと呼ばれるBrentサイトのサイトを使用して、ホスト名に加えて、現在実行中のクエリに関するその他の関連データを取得して、待機タイプまたは待機中のクエリを取得できます。

0
BeginnerDBA