SQL Server on Windows Azure VMsのチューニングポイントを考える

SQL Azure改め、Windows Azure SQL Databaseに改称されたことで、
SQL Detabaseだけじゃなくて、Windows Azure platform全体を見るように東の方から
指令を受けたので、いろいろ検証していくよ!

SQL Server on Windows Azure VMs

2012年スプリングリリースを受けSQL ServerをWindows Azure上で、動作させられるようになりました。
それに伴い、SQL Server on Azure VMsとAzure SQL Databaseの比較をする機会がでてきます。
実際に、「データ シリーズ: Windows Azure 仮想マシン内の SQL Server と Windows Azure SQL データベースの比較」と言う記事が公開されました。

記事の中で、次のように唄っている箇所があります。

Windows Azure VM で実行される SQL Server では、データベース 1 つあたりのパフォーマンスは、
Windows Azure で実行可能な最大の仮想マシン イメージの制約を受けます。
これは、導入当初は
仮想 CPU 数 8 個、
RAM 容量 14 GB、
ストレージ容量 16 TB、
ネットワーク帯域幅 800 MB/秒
という構成の VM になる予定です。
ストレージはお客様の手でパフォーマンスに合わせて最適化および構成可能です。

これらについて、性能的にどうなのかを考察したいと思います。

注意事項

マイクロソフト ソフトウェア ライセンス条項
MICROSOFT SQL SERVER 2012 DEVELOPER
5.    ベンチマーク テスト。お客様は、マイクロソフトの事前の書面による許可がない場合、本ソフトウェアのベンチマーク テストの結果を第三者に開示することはできません。ただし、この制限はMicrosoft .NET Framework (以下を参照) には適用されません。

SQL Server のソフトウェアライセンス条項にベンチマークテストの公開を禁止する条項があります。
その為、今回の考察では具体的な評価結果を公表するのは控えようと思います。
SQLIOの結果であればストレージ性能評価なので、ライセンス条項に抵触しないとは思いますが。

メモリ

SQL Serverを始めとしたリレーショナルデータベースは、
データをメモリにキャッシュすることで物理I/Oを減らすことで性能を向上させます。

Windows Azure VMsの最大メモリ容量は14GB。
OS用のメモリとコネクション用に2~3GBと想定すると残り11GB。
必要なデータをメモリ内に格納できる範囲が性能限界点になるのかなぁと思います。

ストレージ

ストレージ性能については、「ストレージはお客様の手でパフォーマンスに合わせて最適化および構成可能」となっています。

tempdb

Windows AzureのVirtual Machineは、Dドライブが非永続化領域のキャッシュ領域となっています。

image

図のように、Dドライブは、仮想マシンを動作させる物理マシーンのローカルストレージを使用しているので、性能を期待できると言われています。
Dドライブがtempdbの使用領域として第一候補でしょうか。

データストア

例えば、Windows Server 2012で提供が始まった記憶域プールを使用して
複数のVHDをひとまとめにしてデータを分散させることで、物理I/Oが分散できるので、
性能向上を期待できます?

image