sql >> データベース >  >> RDS >> Sqlserver

Azure仮想マシンでのSQLServer2014の実行

    Microsoftは、Microsoftの17のAzureデータセンターの1つにあるAzure仮想マシンでSQLServer2014を実行することをますます容易にしています。任意のサイズのAzure仮想マシンで、Azureギャラリーから事前構成されたSQLServer2014インスタンスを使用して事前構成された仮想マシンを実行できます。ギャラリーからの選択肢の1つは、Windows Server2012R2で実行されている「トランザクションワークロード用に最適化されたSQLServer2014Enterprise」です。事前構成されたギャラリーイメージを使用することの良い点の1つは、SQLServer2014ライセンスの料金を支払う必要がないことです。選択したSQLServerのエディションと仮想マシンのサイズの1時間あたりのコストを支払うだけです。

    SQLServer2014構成オプション

    Microsoftは、「このEnterprise EditionイメージはOLTPワークロード用に最適化されており、A4、A7、A8、A9などのVMサイズを対象としています。VMを展開すると、Windowsストレージスペースが事前構成されます」と説明しています。 Microsoftは、SQL Server 2014でインスタンスレベルの構成作業も行っていますが、標準のベストプラクティスと見なされるものでは十分ではありません。

    それらは、サイズがすべて25600MBで、自動拡張増分が1024MBの8つのtempdbデータファイルを作成します。これは、デフォルトの適切な選択です。また、起動トレースフラグとしてTF1117およびTF1118を有効にします。これは、SQLServerにも適しています。最後に、Microsoftは、ファイルの即時初期化とオペレーティングシステムのメモリ内のページのロックも有効にします。これにも同意します。

    Microsoftがこれらのインスタンスレベルの構成オプションにもいくつかの変更を加えたことを望みます。

    1. バックアップ圧縮のデフォルト
    2. 並列処理のコストしきい値
    3. 最大並列度
    4. 最大サーバーメモリ(MB)
    5. アドホックワークロードに最適化

    ほとんどの場合、バックアップ圧縮はデフォルトで有効になっている必要があります。並列処理のコストしきい値は、ワークロードに応じて、デフォルトの5よりも高い値に上げる必要があります。通常、最大並列度は、NUMAノードのコア数に基づいてデフォルト以外の値に変更する必要があります。この設定は、ワークロードにも依存します。最大サーバーメモリは、仮想マシンのRAMの量と、VMで実行しているもの(SQL Serverデータベースエンジン以外)に基づいて、デフォルト以外の値に設定する必要があります。最後に、ほとんどすべての場合に、アドホックワークロードの最適化を有効にする必要があると思います。

    Microsoftの弁護では、VMサイズと予想されるデータベースサーバーのワークロードの詳細を(事前に)知らずに、これらの項目のいくつかについて満足のいく構成を選択することは困難です。オンプレミスのSQLServerインスタンスの場合と同様に、タスクはユーザーに任されます。

    Azure仮想マシンのサイジング

    A0BasicからA9Standardマシンまで何でも選択できますが、実稼働で使用する場合は、A4 Standard、A7 Standard、A8 Standard、またはA9Standardサイズの仮想マシンを選択することをお勧めします。 SQLServer仮想マシンの価格の詳細はここにリストされています。

    表1のこれらの推奨事項の比較仕様を見ると、A4標準マシンを選択する理由を理解するのは困難です。これは、大型のA7またはA8標準マシンと同じ時間あたりのコストがかかるためです。オンラインドキュメントを見ると、A7とA8標準のマシンの実際の違いが最初はあまり明確ではありません。もう少し掘り下げてみると、A8標準マシンはコンピューティングインテンシブインスタンスと見なされ、2つのネットワークアダプター(1つは10Gbps、もう1つは32Gbps RDMA対応)とともに、より高速な2.6GHz IntelXeonE5-2670プロセッサーを使用することになっています。

    A7標準仮想マシンはやや遅い2.2GHzIntelXeon E5-2660プロセッサを使用しますが、ネットワーク接続は標準の1Gbpsイーサネットのようです。これはプロセッサとネットワークのパフォーマンスに大きな違いがあるように聞こえますが、SQLServerを使用するためのAシリーズ仮想マシンの主な問題ではありません。

    VMサイズ SQL標準レート SQLエンタープライズレート コア数 RAMの量
    A4標準 $0.80/時間 $3.00/時間 8 14GB
    A7標準 $0.80/時間 $3.00/時間 8 56GB
    A8標準 $0.80/時間 $3.00/時間 8 56GB
    A9標準 $ 1.60 / hr $6.00/時間 16 112GB

    表1:AシリーズSQLServer仮想マシン情報

    すべてのAシリーズ仮想マシンの主な問題は、MicrosoftがWindowsストレージスペースを使用してディスクサブシステムを事前構成し、A-の固有のパフォーマンス制限を考慮して可能な限り最高のパフォーマンスを実現したとしても、かなり悲惨なI/Oサブシステムのパフォーマンスです。シリーズの仮想マシンとホスト。図1は、トランザクションログファイル用のEast US AzureデータセンターのA4標準マシンからのE:ドライブのCrystalDiskMarkの結果を示しています。

    図1:A4標準のCrystalDiskMarkの結果

    SQL Serverのはるかに優れた代替手段は、Dシリーズ仮想マシンです。これらの仮想マシンの1時間あたりのコストは、同等のサイズのAシリーズ仮想マシンと同じです。ローカルSSDストレージは、永続的ではないため、tempdbやバッファプール拡張(BPE)ファイルにのみ使用する必要があります。 Dシリーズ仮想マシンに関連するいくつかの仕様を表2に示します。

    VMサイズ SQL標準レート SQLエンタープライズレート コア数 RAMの量
    D4標準 $0.80/時間 $3.00/時間 8 28GB
    D13標準 $0.80/時間 $3.00/時間 8 56GB
    D14標準 $ 1.60 / hr $6.00/時間 16 112GB

    表2:DシリーズSQLServer仮想マシン情報

    D4標準マシンのコストはA4標準マシンと同じですが、2倍のRAMといくつかのローカルSSDストレージがあります。 D13標準マシンのコストはA7またはA8標準マシンと同じですが、ローカルSDDストレージの利点があります。 D14標準マシンのコストはA9標準マシンと同じですが、ローカルSSDストレージの利点もあります。この情報を考えると、SQLServerにAシリーズの仮想マシンを使用することはほとんど意味がありません。

    残念ながら、SQL Serverデータおよびログファイルの永続ドライブも、図2および3に示すように、CrystalDiskMarkでのI/Oパフォーマンスがかなり標準以下です。

    図2:D14標準のCrystalDiskMarkの結果 図3:D14標準のCrystalDiskMarkの結果

    ローカルSSDのパフォーマンスは、Azure仮想マシンのサイズに関連しており、サイズが大きいほどローカルSSDのパフォーマンスが向上します。米国東部のAzureデータセンターにあるD14標準マシンのCrystalDiskMarkのパフォーマンス結果を図4に示します。

    図4:ローカルSSDストレージのD14標準CrystalDiskMarkの結果

    F:ドライブ(SQL Serverデータファイル用)の結果はE:ドライブよりもわずかに優れていますが、どちらのドライブもSQLServerのパフォーマンスレベルは非常に低くなっています。

    結論

    DシリーズのマシンがAシリーズのマシンよりもSQLServerの使用に適していることは明らかです。また、SQL Serverにプロビジョニングすることを決定した仮想マシンのサイズと価格に細心の注意を払うことも理にかなっています。これは、同じ1時間のコストでより多くのRAMを取得できるためです。パフォーマンスの観点からの2つの最良の選択は、D13またはD14標準仮想マシンです。

    Azureギャラリーから事前構成されたSQLServer2014インスタンスを使用すると、SQL Serverのライセンス費用を大幅に節約でき、必要な構成作業の多くがベースイメージで既に完了しています。それでも、好みとワークロードに基づいて、いくつかの最終的な構成変更を行う必要があります。最後に、時間をかけて仮想マシンでいくつかのパフォーマンスベンチマークを実行し、仮想マシンが提供できるパフォーマンスのレベルを理解する必要があります。


    1. MySQL RAND()関数–MySQLでランダムな数値を生成します

    2. SELECT * FROMのショートカットはありますか?

    3. テーブルを参照/編集してクエリを実行するためのSQLServerManagementStudioの代替手段

    4. 行が存在しない場合のOracle挿入