ここでは多くのことが行われていますが、そのほとんどはかなり広範で曖昧です。
2008R2 RTMは2010年4月21日にリリースされました。完全にサポート対象外です。ちょうど3年前にリリースされた最新のService Packを優先的に使用する必要があります。そうすれば、奇妙なバグや何かにぶつかった場合にカバーされます。上の頭の上に、ここであなたがダウンロードする必要があるかを把握します。
vCPU(1〜4)を追加し、設定を変更しなかったため、クエリを並行して実行できます。これはすべて速くなるように聞こえますが、しばらくお待ちください!
RAMを追加したかもしれませんが、サーバーがそれを利用できるように、最大サーバーメモリを変更していない可能性があります。
サーバーが待機しているものを把握します。私が取り組んでいるオープンソースプロジェクトでは、SQL Serverの測定に役立つ無料のスクリプトを提供しています。上の頭の上にここにあなたがそれらを試してみるしたい場合。
サーバーの待機状態を確認するには、sp_BlitzFirstを取得します。いくつかの方法で実行できます。
これにより、サーバーが起動してから何を待っているかがわかります。
EXEC dbo.sp_BlitzFirst @SinceStartup = 1;
これにより、30秒のウィンドウの間に現在待機しているクエリが表示されます。
EXEC dbo.sp_BlitzFirst @Seconds = 30, @ExpertMode = 1;
どのクエリが待機しているかを把握したら(待機統計について書かれたものが山ほどあります)、物事を制御するために変更を開始できます。
それらが待機しているのを見ればCXPACKET
、それはあなたのクエリが並行しており、おそらく互いに踏みつけていることを意味します。これに達した場合、おそらく並列処理のコストしきい値を最大50に上げ、おそらくMAXDOPを2に下げることを検討する必要があります。
この手順の後、sp_WhoIsActiveやsp_BlitzWho(後者は以前のGitHubリポジトリにあります)などを使用してクエリプランのキャプチャを開始します。待機統計は別として、それらは何が悪いのかを理解するために見ることができる最も重要なものの1つです。
また、SQL Serverに関連してチェックアウトするVMWareカウンターに関するJonathan Kehayiasによるこの記事をチェックアウトすることもできます。
更新
待機統計と少年を確認すると、彼らは奇妙です。CPUには間違いなく何かがあります。サーバーはほとんど退屈していますが、状況が悪化すると事態は悪化します。これを簡単に分解してみます。
と呼ばれる毒待ちを打っていますTHREADPOOL
。あなたはそれのトンを持っていませんが、あなたのサーバーがひどくアクティブではないので、それは理にかなっています。その理由をすぐに説明します。
あなたは本当に長い平均待ち時間がSOS_SCHEDULER_YIELD
ありCXPACKET
ます。VMを使用しているので、SQL Serverに予約があるか、ボックスがひどくオーバーサブスクライブされていないことを確認します。騒々しい隣人はここであなたの一日を本当に台無しにすることができます。また、サーバー/ VMゲスト/ VMホストがバランス電源モードで実行されていないことを確認する必要があります。これにより、CPUが不必要に低速にスピンダウンし、すぐに最高速度に戻りません。
彼らはどのように結びついていますか?4つのCPUを使用すると、512のワーカースレッドがあります。単一のCPU でも同じ量でしたが、クエリを並列処理できるようになったため、より多くのワーカースレッドを消費できることに注意してください。あなたの場合、並列クエリの並列分岐ごとに4つのスレッド。
平行して何が起こっていますか?おそらくすべて。並列処理のデフォルトのコストしきい値は5です。この数値は、90年代後半に、このように見えるデスクトップでの作業中にデフォルトになりました。
確かに、ハードウェアはほとんどのラップトップよりも小さいですが、それでもまだ少し先を行っています。
多数の並列クエリが実行されると、これらのワーカースレッドが不足します。その場合、クエリはスレッドが実行されるのを待つだけです。SOS_SCHEDULER_YIELD
クエリがCPUからステップオフし、長い間戻らないこともあります。ブロッキング待機は表示されないので、ほとんどの場合、クエリ内並列処理の待機がすべて詰まっています。
何ができる?
- バランスのとれた電力モードになっていないことを確認
- MAXDOPを2に変更
- 並列処理のコストしきい値を50に変更します
- 上記のJon K.の記事に従って、VMの正常性を検証してください。
- 呼び出さ
sp_BlitzIndex
れたスクリプトを使用して、欠落しているインデックス要求を探します。
より徹底的なトラブルシューティングについては、クラウドでのハードウェアサイジングに関するGoogle向けのホワイトペーパーをご覧ください。
お役に立てれば!