私たちは専用サーバー(シングルクアッドコア、6 GB RAM)を使用しており、新しい専用サーバー(2xヘキサコア、32 GB RAM)に移行しています。どちらもWindows Server 2008、SQL Server 2008です。新しいサーバーのパフォーマンスは、古い低速サーバーよりもわずかに劣ります。
テストでは、ASP.NETアプリケーションの実行速度が10〜20%遅くなります。STATISTICS IOおよびSTATISTICS TIMEを使用して個々の負荷の高いクエリを実行すると、新しいサーバーでの経過時間が10〜20%長くなります。SQLクエリプロファイルは、高価なクエリでのより高いCPU使用率を示します。
新しいサーバーのタスクマネージャーは、sqlserver.exeが22 GBのRAMを消費していることを示していますが、CPU値は常に非常に低いままです。
私はすべての統計を更新し、インデックスを再構築または再編成しました。実行したテストの量を考えると、この時点で実行プランは新しいサーバーに保存されているはずです。欠落しているインデックスがある場合(私はないと思います)、新旧のサーバーに同じように影響します。新しいものは古いものと同じデータの復元されたバックアップを持っています。
新しいサーバーでのパフォーマンスはもっと良くなると思っていましたが、負荷の方が心配です。負荷がかかった状態でも古いサーバーのパフォーマンスが向上している場合、この少し新しくなった新しいサーバーがその負荷をかけなければならない場合はどうなりますか?
ここで他に何が欠けているでしょうか?
編集:MAXDOPを6に設定。
古いサーバーのOS、データベース、tempdbは同じ物理ドライブ(RAID 10)上にあります。合計4つの15k 3 Gb / s 3.5インチSAS。新しいサーバーには3つのドライブセットがあります。RAID1上のOS、RAID 10上のデータベース、RAID 5上のtempdb。合計9つの15K 6 Gb / s 2.5インチSAS。
古いサーバーには、1 x Intel Xeon E5620 2.40 GHz Quad-Core 8スレッド(w H / T)があります。新しいサーバーには、2つのIntel Xeon E5-2640 2.5 GHz 6コア12スレッド(w H / T)があります。
編集2:これが最終的な分析です:
電源プランは、高性能ではなくバランスの取れたものでした。それを切り替えた。
TempdbはRAID 10ではなくRAID 5にありました。別のHDを追加して、2つの物理的に異なるRAID 10構成を作成しました。
ウイルススキャンから除外されたSQL関連ファイル(mdf、ldf、ndf、bak)。
新しいサーバーへの移動後にすべてのインデックスを再構築しました。それらは非常に断片化されていました-おそらくバックアップ、コピー、復元の結果ですか?
そして、プロセッサのジャンプはそれほど大きくないことに気づきました。クエリはそれほど速く実行されませんが、より多くのプロセッサ、より多くのコア、より多くのRAMがあれば、よりスケーラブルになります。