Azure SQL Database サーバーレスでのコンピューティングの自動スケーリングを使用した価格パフォーマンスの最適化

2019年5月17日 に投稿済み

Principal Program Manager, Azure SQL Database

コンピューティング リソースの割り当てを最適化してパフォーマンス目標を達成するとともに、コストを管理することは、使用パターンが複雑なデータベース ワークロードの場合は特に困難な作業となる可能性があります。これらの課題に対処するため、Azure SQL Database サーバーレスのプレビューが発表されました。SQL Database サーバーレス (プレビュー) は、使用量が断続的で予測不可能なデータベースの、価格パフォーマンスを最適化し、パフォーマンス管理を簡素化する、新しいコンピューティング レベルです。さまざまなアプリケーションで SQL Database サーバーレスが役立つ使用パターンが頻繁にみられます。その例として、基幹業務アプリケーション、開発/テスト データベース、コンテンツ管理、e コマース システムがあります。SQL Database サーバーレスは、コンピューティング サイズがはっきりしない新しいアプリケーションや、コスト削減のために再スケーリングが頻繁に必要なワークロードにも適しています。サーバーレス コンピューティング レベルでは、SQL Database のフル マネージドで組み込みのインテリジェンスのメリットをすべて利用して、アプリケーション開発の高速化、操作の複雑さの軽減、総保有コストの削減を行うことができます。

コンピューティングの自動スケーリング

SQL Database サーバーレスは、ワークロードの需要に基づいて単一データベースのコンピューティングを自動的にスケーリングし、1 秒あたりのコンピューティング使用量に対して請求を行います。サーバーレスは、時間単位で請求される固定価格で固定量のコンピューティング リソースを割り当てる、SQL Database のプロビジョニング済みコンピューティング レベルとは異なります。短時間のスケーリングでは、プロビジョニング済みコンピューティング データベースは、ピーク時の使用量に対応するためのコストでリソースを過剰にプロビジョニングするか、過少プロビジョニングとパフォーマンスの低下に見舞われるかのどちらかです。長時間のスケーリングでは、プロビジョニング済みコンピューティング データベースを再スケーリングすることができますが、このソリューションには、使用パターンを予測することや、スケジュールまたはパフォーマンス メトリックに基づく再スケーリング操作をトリガーするカスタム ロジックを記述することが必要になる場合あります。これにより、開発と操作がさらに複雑になります。サーバーレスの場合、構成可能な制限内のコンピューティングのスケーリングはサービスによって管理され、継続的にリソースが適切なサイズに変更されます。また、サーバーレスでは、非アクティブな使用期間にデータベースを自動的に一時停止し、再びアクティブになると自動的に再開されるオプションを利用できます。

使用したコンピューティングの料金のみの支払い

SQL Database サーバーレスの場合、コンピューティングの料金は、1 秒間に使用された CPU およびメモリの量に基づきます。  データベースが一時停止している間は、ストレージのみが課金されるため、価格最適化というメリットもあります。

たとえば、基幹業務アプリケーションや開発/テスト データベースは、夜間はアイドル状態ですが、1 日を通してマルチコアのバースティング ヘッドルームが必要です。アプリケーションで、最大 4 個の仮想コアの自動一時停止と自動スケーリングを許可するよう構成されたサーバーレス データベースを使用してしており、24 時間にわたって次の使用パターンが検出されたとします。

24 時間にわたる SQL Database サーバーレスの使用パターンのグラフの表示

この例からわかるように、データベースの使用量は請求されるコンピューティングの金額に対応します。この金額は、仮想コア秒単位で測定され、合計は 24 時間で約 46,000 仮想コア秒になります。サーバーレス データベースのコンピューティングの単位価格を 0.000073 ドル/仮想コア/秒とします。このとき、この 1 日のコンピューティング料金は 3.40 ドルにも満たない額になります。これは、コンピューティングの単位価格と累積された仮想コア秒の合計を乗算したものです。この期間中、データベースはアイドル状態の間は自動一時停止になり、ユーザーの介入なしに 4 個の仮想コアの最大 80% のバースティング エピソードのメリットを利用できます。この例では、サーバーレスを使用した場合、同じ 4 個の仮想コアの制限で構成されたプロビジョニング済みコンピューティング データベースと比べてコストを大幅に節約できます。  

プレビューの場合、料金が割り引きされます。この例では、料金は 2019 年 5 月の米国東部リージョンに基づいており、変更される場合があります。最新の料金については、Azure SQL Database 料金ページをご覧ください。

価格パフォーマンスのトレードオフ

SQL Database サーバーレスを使用する場合、価格パフォーマンスのトレードオフを考慮する必要があります。これらのトレードオフは、コンピューティングの単位価格と、使用率が低い期間後またはアイドル使用期間後のコンピューティング ウォームアップによるアプリケーション パフォーマンスへの影響に関連しています。

コンピューティングの単位価格

サーバーレスは断続的な使用パターンのワークロードに最適化されているため、コンピューティングの単位価格は、サーバーレス データベースの場合、プロビジョニング済みコンピューティング データベースの場合よりも高くなります。CPU やメモリの使用量が十分に高く、十分な期間にわたって維持されている場合、プロビジョニング済みコンピューティング レベルはコストを抑えられる可能性があります。

使用率が低い期間後のコンピューティング ウォームアップ

サーバーレス データベースがオンラインの間、CPU またはメモリの使用量が十分な期間にわたって十分に低かった場合、メモリは徐々に再利用されます。ワークロードが再びアクティブになると、データ ページを SQL バッファー プールにリハイドレートするためにディスク IO が必要になったり、再コンパイルするクエリ プランが必要になったりする場合があります。使用率の低さに基づいてキャッシュを再利用するためのこのメモリ管理ポリシーは、SQL Database サーバーレスに固有のもので、顧客のコストを管理するために行われますが、パフォーマンスに影響する可能性があります。使用率の低さに基づくメモリの再利用は、単一データベースのプロビジョニング済みコンピューティング レベルまたはエラスティック プールでは行われません。これらの場所では、この種類の影響を回避できます。

一時停止後のコンピューティング ウォームアップ

サーバーレス データベースの一時停止と再開を行うための待機時間は通常、約 1 分以下です。その間、データベースはオフラインです。データベースが再開されたら、メモリ キャッシュをリハイドレートする必要があります。これにより、最適なパフォーマンスの状態に戻るまでの待機時間がさらに長くなります。このパフォーマンスの影響を補正するため、自動一時停止になる前に経過することが必要なアイドル状態を構成できます。または、この影響を受けるワークロードの自動一時停止を無効にし、引き続き自動スケーリングを利用することもできます。コンピューティングの最低支払額は、使用量に関係なくデータベースがオンラインの間は請求されるため、自動的な一時停止を無効にすると、コストが増加する場合があります。

詳細情報

Azure SQL Database サーバーレスは単一データベースの General Purpose レベルでサポートされています。