現在、私は次の仕様で270ドル/月でレンタルする専用マシンでMS SQL Server 2014(12.1.4100.1)のインスタンスを実行しています。
Azure SQL Databaseを少しいじってみましたが、彼らのプラットフォームに切り替えるというアイデアを楽しんでいます。 V12サーバーでP2 Premiumの価格帯を使用してAzure SQLデータベースを起動し(テストのためだけに)、既存のデータベースのコピーを(専用マシンから)ロードしました。
専用マシンのデータベースに対して1つ、P2 Azure SQLデータベースに対して1つ、いくつかのクエリセットを並べて実行しました。結果は一種の衝撃的でした:私の専用マシンは、毎回大きなマージンでAzure dbを(実行時間の点で)優れていました。通常、専用dbインスタンスは、Azure dbの実行にかかった時間の1/2から1/3未満で終了します。
これで、Azureプラットフォームの多くの利点を理解できました。専用マシン上で管理されたセットアップと管理されていないセットアップの比較、私が持っているものよりもポイントインタイムの復元が優れている、ファイアウォールの設定が簡単、ジオレプリケーションなどがあります。しかし、データベースには各テーブルに数千から数億のレコードを含む数百のテーブルがあり、複数の結合などでクエリを実行する必要がある場合があるため、実行時間に関するパフォーマンスが本当に重要になります。毎月270ドルの専用機レンタルの次に930ドル/月のサービスのパフォーマンスが悪いことは衝撃的です。私はまだSQL全体としてはかなり新しく、サーバー/なども非常に新しいですが、これは他の誰かに追加されませんか?おそらく誰かが私がここで見逃していることについて何らかの洞察を持っていますか、それともAzure SQL Databaseの他の「管理された」機能が価格の違いを補うことになっていますか?
結論として、私は専用のマシンの能力でさえ成長し始めており、AzureのSQL Databaseが素敵な次の足がかりになることを本当に望んでいましたが、何かを逃さない限り、そうではありません。私はまだビジネスの規模が小さすぎて、外に出て他のプラットフォームに何十万も費やすことができません。
私が何かを見逃しているのか、または私が見ているパフォーマンスはあなたが期待するものと一致していますか?現在実行している専用マシンよりも優れたパフォーマンスを発揮できる他のオプションはありますか? Azure SQL Databaseで実行時間を短縮するためにできること(構成/設定)はありますか?繰り返しますが、どんな助けも大歓迎です。
編集:多分それをもう少し明確にするために私の質問を修正させてください:私が期待する完全な実行時間の観点から見ているものです、専用サーバーは$ 270 /月でMicrosoftのSQL SQL @ 930ドル/月?マネージドとアンマネージドのような他の「特典」を無視し、Azureのような本番用などの意図された使用を無視します。単一の専用マシンのパフォーマンス。
MicrosoftからAzure SQL DBへの代替手段があります。
「AzureでのSQL Server仮想マシンのプロビジョニング」
https://Azure.Microsoft.com/en-us/documentation/articles/virtual-machines-provision-sql-server/
2つのオファリングの違いの詳細な説明:「Azure VMでのAzure SQL DatabaseとSQL Serverの理解」
スタンドアロンのSQL ServerとAzure SQL DBの大きな違いの1つは、SQL DBを使用すると、異なるマシンで複数のインスタンスを実行することで実現される高レベルの可用性に料金を支払うことです。これは、4台の専用マシンをレンタルしてAlwaysOn可用性グループで実行するようなもので、コストとパフォーマンスの両方が変わります。ただし、可用性については一度も言及しなかったので、これはあなたのシナリオでは問題ではないと思います。 VMのSQL Serverは、ニーズに合っている場合があります。
パフォーマンスと可用性は別として、考慮すべき他のいくつかの重要な要素があります。
(免責事項:AzureでもSQL Serverでもありませんが、Microsoftで働いています)。
「Azure SQL」は「SQL Server」と同等ではありません。個人的には、Azure SQLの代わりに一種の「ホストされたSQL Server」を提供したいと思います。
表面的には、この2つは同じです。両方とも、T-SQLのクエリ機能を備えたリレーショナルデータベースシステムです(どちらも、内部で同じDBMSを使用しています)。
Azure SQLは、ideaが2つのデータベースを持っているという点で異なります:ローカルSQLサーバー(理想的には2012以降)を使用する開発データベースとAzure SQL上の運用データベース。 Azure SQLデータベースを直接変更することは決してすべきではありません。実際、SSMSにはAzure SQLの設計ツール(テーブルデザイナー、ビューデザイナーなど)が用意されていないことがわかります。代わりに、ローカルのSQL Serverデータベースを設計および操作し、「DACPAC」ファイル(またはSSDTで生成できる特別な「変更」XMLファイル)を作成します。次に、開発データベースをコピーするようにAzure DBを変更します。 「設計複製」システムの。
それ以外の場合、お気づきのとおり、Azure SQLは組み込みの復元力、バックアップ、管理の簡素化などを提供します。
パフォーマンスに関しては、インデックスやその他の最適化が欠落していた可能性がありますか?また、ローカルSQL Serverと比較してAzure SQLのレイテンシーがわずかに高いことに気付くかもしれません。ping時間(Azure VMからAzure SQL Hostまで)が約5〜10ミリ秒であるため、設計する必要がありますアプリケーションの負荷を軽減するか、ページの読み込み時間を短縮するためにデータ取得操作を並列化します(これが構築しているWebアプリケーションであると仮定します)。
SQL DBには、可用性(パフォーマンスに影響を与える可能性があります)、特定時点の復元機能、およびDR機能が組み込まれています。使用量に基づいてDBを拡大/縮小して、コストを削減するオプションがあります。グローバルクエリ(シャードデータ)を使用して、クエリのパフォーマンスを向上させることができます。 SQl DBは自動アップグレードとパッチ適用を管理し、管理性のストーリーを大幅に改善します。あなたはそれのために少しプレミアムを支払う必要があるかもしれません。アプリケーションレベルのキャッシュ/負荷の均等な分散、コールド時のダウングレードなどにより、データベースのパフォーマンスが向上し、コストが最適化される場合があります。