web-dev-qa-db-ja.com

MS SQL Serverで重複データを送信および取得する単一のクエリ?

非常に奇妙なことが起こっています。 表示システムの特定のデータベースに対してすべてのクエリが定期的に「実行速度が遅い」ことになります。つまり、「通常の速度」で5分間、次に5分間ゆっくりと(大体)。

さらなる調査(「自明」を排除してから数日後)では、クエリがクライアント(Sql Server Management Studio)によって複数回送信され、複数回受信されるように見えることがあります。

つまり、「クライアントから送信されたバイト数」は2倍または3倍になり、「サーバーから受信されたバイト数」も同じです。 「クライアント処理時間」と「合計実行時間」の増加の明らかに類似したパターン。

これはSELECT * FROM table上のテーブルには3行のデータがあります!

そして1つのクエリが遅くなると、すべて遅くなります。クエリ/結果セットがどれだけ単純か、どの「クライアント」がアクセスしているかは関係ありません(ADO.NETベースのコンソールアプリ/ MVC Webアプリでも同じです)。

任意提案をいただければ幸いです...

[〜#〜]編集[〜#〜]

  1. 「複数クエリ」のものは再作成できません。なぜそれが起こったのかはわかりませんが、一時的に私たちを間違った路地に導いた異常であるようです
  2. @Brent Ozar-ご提案ありがとうございます-残念ながら、これらのタイプのテストはすでに実行されていますが、残念ながら有用な結果はありません!
  3. @ jco360-ご提案いただきありがとうございます。データベース全体でパフォーマンスが遅いため、インデックス作成は重要ではありません(1つは低速=すべてが低速、1つは高速=すべてが高速)。私am開発者であり、SSMSから単純なクエリを実行すると同じ問題が発生します。最後に、ハードウェアの問題が答えである可能性がありますが、64GB RAMとmanyプロセッサは、ほとんど使用されていないサーバーには十分ですが、ハードドライブの破損などがある可能性があります。

テストはボックス自体から実行されているため、ネットワーク関連でもありません。

6

サーバーアクティビティ(http://technet.Microsoft.com/en-us/library/ms175047.aspx)でSQLプロファイルトレースを実行してみてください-テーブル/ページ/インデックスをロックするクエリを同時に実行すると、テーブルロックの問題が発生する可能性があります。

Perfmonを実行してみてください。何かが遅くなると、利用可能なすべてのディスク/ IO/CPU /メモリリソースを使用しているものが実行されている可能性があります。メモリスワッピングを探します。これにより処理速度が低下します。これらのいずれかである場合は、原因を追跡する必要があります。短期間のCPU使用率が100%でも問題ないことに注意してください(実際に最適なパフォーマンスを示している可能性があります)。

また、断片化をチェックし、インデックスの再構築を検討してください。

不要なサービス/アプリケーションをオフにします。これらは、アプリケーションでより適切に使用されるリソースを使い果たします。

1
adam f

すべてが遅く、それがタイミングで本当に一貫している場合、私の推測は障害のあるサーバー上のサービスになるでしょう。

一部のフレーバーはI/Oにフックして、低レベルで何かをキャッチするため、ウイルス保護は明らかな選択です。

また、ネットワークスタックをめちゃくちゃにする更新チェッカーと同じくらい簡単な場合もあります。

バックアップシステムにも障害が発生している可能性があります。

これらのことを調べましたか?

0
Hogan

好奇心から、待機統計は何ですか? SSMSからクエリを自分で実行して実行プランを表示してから、遅いものと速いものを比較しましたか?実行ごとの待機統計が何であるかを記録する拡張イベントについてはどうでしょうか。

またはどのように:SELECT * FROM SYS.DM_OS_WAITING_STATS WHERE Session_id =(spid)(私はこれをメモリから書いたので、うまくいくはずです)。

私はそれが何を待っているのか本当に興味があります。また、core/tempdb物理ファイルはいくつありますか?

0
Ali Razeghi