SQL Server 2008 Web と SQL Server 2008 Enterprise の比較

SQL Server 2008 Web と SQL Server 2008 Enterprise の比較

数か月前にアプリケーションを作成し、Intel Core 2 Quad Q8200 @ 2.33GHz、8 GB RAM、Windows Server 2008 Enterprise、および SQL Server 2008 Enterprise を搭載したワークステーションでオフィスからホストしていました。Web サーバーとデータベース サーバーは両方とも同じマシンで実行されていました。

トラフィックが急増したため、ClubUptime.com を移行し、同社のトップ クラスの Windows VM を 2 つ取得しました。データベース サーバーは、8 GB の RAM と Intel Xeon e5620 @ 2.40GHz で Windows 2008 R2 Standard と SQL Server 2008 R2 Web を実行しています。

切り替えて以来、以前は RAM で約 400 MB で実行されていたデータベースは、現在では約 4~7 GB で実行されており、変更はありません (いくつかの列があちこちで変更された以外)。トラフィックは 4 倍になり、DB はディスク上で 6 GB です。DB が 6 GB しかないのに、SQL サーバーが 7 GB も占有するのはなぜでしょうか。また、データベース全体をメモリに保存するのはなぜでしょうか。

もう 1 つは、サイズが 4 倍になったのに、データベースのメモリ フットプリントが 12 倍になったのはなぜでしょうか。

最後の質問です。以前は 100% で止まらなかったのに、今は CPU が 100% で止まっているのはなぜですか? 設計はシンプルで、結合はほとんどなく、サブクエリもありません。SQL Server のエディションが原因か、実際のハードウェアから VM に移行したという事実が原因ではないかと、途方に暮れています。

答え1

SQL Server は可能な限り多くのメモリを使用するので、他の問題がない限り、メモリ フットプリントについてあまり心配する必要はありません。可能であれば、すべてを保存します。RAM は常にディスクよりも高速であり、他の用途に使用されていないのであれば、使用しない理由はありません。

VM 上で SQL を実行すると問題が発生する場合があります。問題なく動作しますが、仮想化によってパフォーマンスが低下します。ここで多くの人がコメントしているように、SQL は他のほとんどのアプリケーションよりもこの影響を受けます。VM インスタンスによっても大きく異なります。ハイパーバイザーが VMware vSphere ホストである場合、同等の実リソースで Xen よりもパフォーマンスが向上します。Hyper-V でサポートされ、競合率が低い場合 (ホスト上の VM が非常に少ない場合)、非常に優れたパフォーマンスが得られます。これまで仮想化を解除する必要があった唯一のシステムはすべて SQL サーバーでした。

VM に提供される仮想 CPU の数を指定していないため、Xeon 5620 が VM に提供できる 8 つのコアをすべて使用できるとは考えにくいです。たとえ使用できたとしても、最適ではない可能性があります。全体として、そのプラットフォームで 4 つの vCPU を備えた VM は、Xeon 5620 が元の Core 2 Quad よりもクロックあたり約 30% 優れていると仮定すると、以前の物理プラットフォームに匹敵できるはずですが、実際に匹敵するかどうかは、基盤となるハイパーバイザー、ホスト システムの設定、および同じハイパーバイザーでホストされている他の VM との競合の程度によって異なります。

一般的に、VM 内のパフォーマンス カウンターは信頼できません。少なくとも、それらがすべてを伝えているとは信頼できません。VM がシステム上の実際の CPU の容量の 100% を実際に使用しているかどうかを確認するには、ハイパーバイザーの観点からパフォーマンスを把握する必要があります。

関連情報