私は通常、MSSQLサーバーを専用サーバーで実行していますが、VMWare ESXi4ホスト内でSQLServerを実行しているクライアントを採用しており、率直に言って、それはがらくたのように実行されています。
問題となっているのはデータベース自体ではないことを確認しました。同じデータベースをVMWareゲストよりもスペックの低い専用サーバーにデプロイしたところ、少なくとも5倍高速に実行されました。
サーバーは次のとおりです。
Dual Quad Core Xeon 2Ghz (I don't know the exact model)
24Gb RAM
4x 300Gb SAS (RAID 10)
ESXi 4
ホストは次のとおりです。
4x vCPUs
3Gb RAM
80Gb disk space
Server 2008 Standard
SQL Server 2008 Workgroup
ホスト上の他のVMはトラフィックが非常に少ないです。 2番目のDC(ほとんど未使用)、トラフィックの少ないWebサーバーとボリュームの少ないターミナルサーバー(常に最大5人のユーザー)およびその他の数人のゲスト。
ずっと前に、WindowsとSQLサーバーでページング設定をすべて設定して最適化することについての記事を読みましたが、それ以上見つかりません:(
SQLのパフォーマンスを向上させるために誰かが提供できるヒントやコツはありますか?
わかりました。ここにいくつかのヒントがありますが、パフォーマンスに適した順序は特にありません。
よろしければ、さらに追加します。幸運を祈ります。
vSphereリモートCLI (ドライバーとツール->自動化ツールとSDKに移動)を取得します
セットアップが完了したら、ボックスにログインし、esx topを使用して、ボトルネックがどこにあるかを確認します( 有益なリンク )
4つのvCPUを実行しているので、esxtopのプロセッサ画面の%RDY列に注意してください。これは、マシンが一度に4つのCPUにアクセスするのを待機している時間です。 2〜5を超えるものと話すVMWare SEによっては、悪い結果になります。
また、VICの[パフォーマンス]タブの下にあるグラフを見て、何が起こっているかを確認できます。特にメモリグラフを詳しく見て、メモリの多いバルーンに注意してください。
おそらく、仮想化は、すでにパフォーマンスの低いデータベースの兆候にすぎません。データベースのパフォーマンスは仮想化時に常に特に厄介ですが、トラフィックがそれほど多くない場合は、ホットデータをRAMに保持することでDBが合理的に実行できない理由はありません。一般的なSQLパフォーマンスをチェックし、3GBのRAM割り当てられている(もっと与えることができますか?))を使用しているかどうかを確認します。書き換えたり、追加のインデックスを使用したりすることでメリットが得られる可能性のある不正なクエリなど。
他の人が言っているように、合計8コアしかないボックス上の4vCPUはたくさんあります。あなたはおそらく多くのプロセッサスケジューリングの競合にぶつかっています。私はそれを1つか2つに落とし、パフォーマンスが向上するかどうかを確認し、そこから進みます。