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

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

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

先日、「Azure SQL Database で『パフォーマンス悪っ!』と嘆く前に」 というタイトルで Azure SQL Database のパフォーマンスについてお話をいたしました。

今回のご相談は、「他社クラウドの IaaS 環境から Azure 仮想マシンへ引っ越したらパフォーマンスが激烈悪化した」です! 似ているようで共通点があまりないご相談です。

大変ありがたいことに、最近オンプレミスから Azure への移行だけでなく、他社クラウドやデータセンターから Azure への移行についてご相談をいただく機会が増えてまいりました。 これに伴って増えてきたのが、他社クラウドの IaaS 環境でホストしていたデータベース (SQL Server、PostgreSQL、MySQL など) 環境をそのまま Azure 仮想マシンへ移行しただけなのに、データベースのスループットが激しく落ちてしまった!というご相談です。

ご相談によってスループットの差はまちまちですが、例えば、Azure 仮想マシン上のデータベース環境に 10,000 件のデータを Insert、Delete します。 このテスト プログラムの実行にかかる時間が他社クラウドの 5 倍以上になってしまう、といった、ちょっと耳を疑いたいような大きな違いが出ることもありました。

オンプレミス環境でも皆様経験がおありかと思いますが、データベース環境で期待したスループットが出ない原因 No. 1 は「ストレージのスループット」です。 I/O が遅い、待ち時間が発生する、コミットに時間がかかる、現象はいろいろですが、ボトルネックがストレージにあることがかなり多い印象です。

実はこれ、Azure 仮想マシンでも同様のことが発生する可能性は十分あります。 というのも、Azure のストレージは既定で 3 重化されており、かつ 2 つのコピーに書き込みが終了しないと全体の書き込みが終わったことにならない、というルール?があります。

TITLE: ローカル冗長ストレージ (LRS):低コストのデータの冗長性
URL: https://docs.microsoft.com/ja-jp/azure/storage/common/storage-redundancy-lrs

引用ここから –

LRS ストレージ アカウントへの書き込み要求は、データが 3 つのレプリカすべてに書き込まれた後にのみ、正常に返されます。

引用ここまで —

このような、ストレージからの書き込み完了応答に時間がかかってパフォーマンスに影響が出る場合、ストレージへの書き込みを減らすことがもっとも有効な手段です。

一度に大量にデータを更新する必要がある場合は 1 件処理するごとにコミットするのではなく、例えば 1000 件に一度とか 10,000 件に一度とか、コミットの頻度を下げることで全体のスループットを上げる効果が見込めます。
また、Mシリーズの Azure 仮想マシン + Premium Storage 限定ですが、書き込みアクセラレータを有効にするのも効果があるかもしれません。

TITLE: 書き込みアクセラレータを有効にする
URL: https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/how-to-enable-write-accelerator

ちなみに、SQL Server を前提に書かれた資料ではありますが、Azure 仮想マシン上の SQL Server のパフォーマンスに対するガイドラインが公開されています。 これは必見です。

TITLE: Azure Virtual Machines における SQL Server のパフォーマンスに関するガイドライン
URL: https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/sql/virtual-machines-windows-sql-performance

SQL Server の機能に特化した部分以外、例えばディスクのストライピングや Premium SSD の利用、読み取りキャッシュの有効化などは、SQL Server でないデータベース システム (PostgreSQL、MySQL など) でも有効かと思います。

なお、「Azure 仮想マシンのサイズをうーんと上げたのにパフォーマンスが上がらない!」という状況がこれまた多数見受けられます。

Azure 仮想マシンのサイズを上げる = コアとメモリを増やす ということですが、これは並列処理をガンガン流すとかものすごく大きなデータセットを集計するとか、そういうケースでは有効です。 が、ボトルネックがストレージのスループットである場合はほぼ効果がありませんので、早めに Azure 仮想マシンのサイズを元に戻しましょう。

参考になりましたか?

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

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

クラウド ビジネス相談センターは、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 サイトをご覧ください。 * 本コンテンツのすべての内容は、作成日時点でのものであり、時間の経過または様々な後発事象によって変わる可能性がありますので、あらかじめご了承ください。