こんにちは。 クラウド ビジネス相談センターの大久保です。

クラウド ビジネス相談センターは、 MPN パートナー様のクラウド ビジネス推進を支援する窓口です。 毎日たくさんのパートナー様から、 さまざまなご相談をいただいています。

「そこが知りたい!シリーズ」では、 クラウド ビジネス相談センター (クラ相) に寄せられるパートナー様のリアルなご相談をもとに、 今パートナー様が知りたい内容をお届けしてまいります。

皆様、Azure SQL Database ご利用いただいていますか? クラ相にいただく Azure 関連のご相談の中で、Azure 仮想マシンの次に多いと私が勝手に思っているのが、この Azure SQL Database に関する内容です。 (本当は Azure Backup のほうが多いかもしれません)

Azure SQL Database は、プランごとに DTU やコア数・メモリ量などパフォーマンスを判断しやすい数値が公開されており、予算と要求スループットを総合的に判断して最適なプランを決められる、使い勝手の良さと利用の敷居の低さで大変人気のある DaaS (Database as a Service) です。

ところが、導入後に意外と多く聞こえてくるのが「思ったほどパフォーマンスが出ない」という声… 特に、Azure SQL Database Standard をご利用の環境で多いイメージです。

正直言いまして、同じコア数メモリ数のオンプレの環境と Azure SQL Database (特に Standard) を比較すると、Azure SQL Database Standard のスループットはオンプレよりも低くなってしまうことが多いように思います。

DTU を基準にしてプランを決めるケースでは、そもそも DTU の数字が示すパフォーマンスを把握するのに慣れが必要なこともあり、見誤ってしまうことも多いのかと思います。

Azure SQL Database Standard では、データベース ファイル (.mdf/.ldf) は Azure BLOB ストレージに保存されています。 Azure BLOB ストレージの組み込みのデータ可用性と冗長性の機能を利用し、ログ ファイル内のすべてのレコードまたはデータ ファイル内のすべてのページが保持されることを保証しています。

一方、Azure SQL Database Premium では、基になるデータベース ファイル (.mdf/.ldf) は、IO 待機時間を抑えられるだけ抑えるために SSD ストレージ上に配置されています。 高可用性は、SQL Server Always On 可用性グループと同様のテクノロジを使用して実装されます。

データベース ファイルを配置するストレージと高可用性のテクノロジが Standard と Premium で大きく異なること、オンプレミス環境ではこれほどの規模の高可用性は構成していなかったなど、さまざまな状況の違いによって、特にストレージ IO のパフォーマンスが全体のスループットに大きな影響を与える処理で、全体のパフォーマンスが「これは違うな」と体感できるレベルで差が出ることがあります。

TITLE: 高可用性と Microsoft Azure SQL Database
URL: https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-high-availability

さて、原因はいろいろあるとは言え「差が出る」こともある、ということはわかりました。では、思ったほどパフォーマンスが出ない状況に直面した場合、どうしたらいいでしょう?

確かに Azure SQL Database はいつでもプラン変更ができるのは事実ですが、パフォーマンスを上げる目的で上位プランに変更すれば価格も上がるわけで、お客様にどこまでご理解いただけるか。

また、この「思ったよりパフォーマンスが出ない」現象は、多くの場合大量のデータを一括で更新する処理の実行時に現れます。 業務アプリケーションでよくある「日時締め処理」「月次バッチ処理」といった、一度に大量のレコードをがんがん更新したり削除したり挿入したりする処理を連続で実行するシナリオです。

逆に、一度のトランザクションで数レコードだけ扱うような日々の業務では問題にならないことがほとんどで、そうなると余計上位のプランへ変更するのも検討しづらくなってしまいます。

もし、「日時締め処理」「月次バッチ処理」を実行する時だけパフォーマンスを上げることができれば…

実は、Azure SQL Database のプラン変更 (スケールアップ) にかかる時間は平均 4 秒以内と、非常に短く抑えることができます。 ただし、データベースへの接続が切断されるため、このデータベースを利用するアプリケーション側でのエラー発生時の再試行ロジック対応は必須ですが、そもそも Azure SQL Database ではこの再試行ロジックって絶対必須なので、これは問題にならないと考えています。

TITLE: 最小限のダウンタイムでデータベースのリソースを動的にスケーリングする
URL: https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-scale-resources

TITLE: SQL Database の接続に関する問題と一時的なエラーに対応する
URL: https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-connectivity-issues

大量データを更新するバッチ処理を実行する前に Azure SQL Database のプランを十分なスループットが得られるプランに一時的に変更し、すべての処理が終了したら元に戻せば、コストを最小限に抑えつつ十分な性能を確保できます。 このような運用はオンプレミスではまず実現できません、というかしませんね。

まさに、クラウド サービスの超有効活用と言える使い方ですね!

参考になりましたか?

他にどんな方法があるの?自分の案件ではどう考えればよい?といったご相談なら、いつでもクラ相にご連絡ください!

===== クラウド ビジネス相談センター =====

クラウド ビジネス相談センターは、Microsoft Partner Network (MPN) にご参加いただいているパートナー様の技術的な支援を行っています。

Azure、Microsoft 365 など各種クラウド サービス、および、Windows Server、Windows 10、SQL Server について、提案準備中/提案中/展開計画中、アプリケーション設計/開発中のフェーズにおいて、パートナー様のビジネス フェーズに沿って、機能や構成についての情報やアドバイスの提供等の支援を行います。

対応範囲については、こちらの Web サイトをご覧ください。

MPN 特典として、メンバーシップに合わせて相談時間が提供されています。

Gold コンピテンシー、Silver コンピテンシーを取得済みのパートナー様は、ご提案先のお客様名など案件情報を共有していただけますと、提案中のご相談については無償で (相談時間を消費せず) ご利用いただけます。

皆様のご利用お待ちしています。ぜひ、クラウド ビジネス相談センターをご活用ください。

– ご利用方法

クラウド ビジネス相談センターのご利用は、お電話、または、オンラインで承っています。

電話

0120-70-8105 音声案内 3 番 (* 携帯からもご利用いただけます)

受付時間: 9:00 – 17:30 (土日祝日、弊社指定休業日を除く)

オンライン

MPN ポータル、または、Partner Center からご相談いただけます。

お問い合わせ手順は、こちらの Web サイトをご覧ください。

* 本コンテンツのすべての内容は、作成日時点でのものであり、時間の経過または様々な後発事象によって変わる可能性がありますので、あらかじめご了承ください。