Microsoft Azure SQL Database のインメモリ テクノロジで高パフォーマンスを実現

執筆者: Rohan Kumar (General Manager, Database Systems Group)

このポストは、11 月 9 日に投稿された Microsoft Azure SQL Database provides unparalleled performance with In-Memory technologies の翻訳です。

 

このたび、Azure SQL Database に組み込まれたインメモリ テクノロジの一般提供が開始され、Premium プールを含む Premium レベルのデータベースで使用できるようになりました。インメモリ テクノロジは、トランザクション (OLTP)、分析 (OLAP)、混在ワークロード (HTAP) のパフォーマンス最適化を促進させるものです。Azure SQL Database では驚異的なパフォーマンスが実現されており、注文処理のパフォーマンスは 1 秒あたり 75,000 トランザクション (11 倍) に向上し、クエリ実行時間は 15 秒から 0.26 秒 (57 倍) に短縮されました。また、コスト削減にもメリットがあり、インメモリ テクノロジを実装した P2 データベースでは、追加コストが発生することなくトランザクションのパフォーマンスが 9 倍、分析クエリのパフォーマンスが 10 倍に向上します。パフォーマンス向上とコスト削減の成果の詳細は次のとおりです。

  • インメモリ OLTP では、トランザクション処理のスループット向上とレイテンシ短縮が実現されます。商取引やゲームなどのシナリオでは、このパフォーマンス向上の効果が特に大きく表れます。イベントや IoT デバイスからのデータ収集にも効果的です。ほかにも、キャッシュ、データ読み込み、一時テーブル、テーブルを使用したさまざまなシナリオでスピードアップを図れます。
  • クラスター化列ストア インデックスにより、ストレージ使用量が減り (最大で 10 分の 1)、レポート作成クエリや分析クエリのパフォーマンスが向上します。データ マートのファクト テーブルでこれを使用すると、データベース内にさらに多くのデータを納めることができ、パフォーマンスも向上します。また、業務用データベースの履歴データをアーカイブでき、最大で 10 倍のデータに対してクエリを実行できます。
  • Hybrid Transactional and Analytical Processing (HTAP) で非クラスター化列ストア インデックスを使用すると、運用データベースに対して直接クエリを実行できるため、高コストな ETL 処理でデータ ウェアハウスにデータを移動する手間が必要なくなり、ビジネスに関するインサイトをリアルタイムで得ることができます。非クラスター化列ストア インデックスを使用すると、運用ワークロードへの影響を抑えながら OLTP データベースでの分析クエリを大幅に高速化できます。
  • インメモリ OLTP と列ストアを組み合わせることも可能です。列ストア インデックスを使用したメモリ最適化テーブルでは、同一データに対してトランザクション処理と分析クエリの両方を非常に高速に実行できます。

Quorum Business Solutions は、石油・ガス業界の現場作業に対応した SaaS (サービスとしてのソフトウェア) ソリューションを進化させました。Microsoft Azure で実行されるこのソリューションでインメモリ OLTP を活用することで、新規顧客へのサービス提供と企業のサポートの規模を大幅に拡大し、データベースのさらなるスループット向上にコストをかけることなく、事業の拡大を成功させました。

clip_image002
「石油・ガス業界向けの当社の IoT プラットフォームは年中無休 24 時間体制で運用する必要があるため、そのパフォーマンスには拡張性が不可欠です。Azure SQL Database にインメモリ OLTP テーブルとネイティブにコンパイルされたストアド プロシージャを追加したことで、一部の主要処理で DTU の総使用量をすぐに 70% 削減することができました。インメモリ テーブルがなければ、このような成長を実現するにはプラットフォームのさまざまな領域に多大な労力を費やしてパフォーマンスを維持しなければならないところでした。データ中心型のサービスの場合は、インメモリ機能のサポートによって、既存のアプリケーションを即座にスケーリングすることができます。データベース以外の部分はほとんど (あるいはまったく) 変更する必要はありませんでした」 – Quorum Business Solutions、ソリューション アーキテクト、Mark Freydl 氏

Quorum Business Solutions での Azure SQL Database の活用方法やインメモリ OLTP による成果の詳細については、こちらの導入事例 (英語) をご覧ください。

Quest は、顧客のデータセンターやクラウドでの SQL Server デプロイメントを監視する Spotlight というソリューションを提供しています。このソリューションではインメモリ OLTP を活用して要求やイベントの処理を高速化し、顧客が自社環境内で発生する問題についてすぐに把握できるようにしています。

quest-logo

「Spotlight は、お客様の SQL Server 環境の問題を速やかに通知します。当社では Azure SQL Database のインメモリ OLTP を利用して堅牢な基盤を構築し、その上に Spotlight の機能を迅速に構築してお客様に配信しています。インメモリ OLTP を使用することできわめて高いスループットが得られ、また柔軟性の高い広く知られた T-SQL を基礎とするプログラミング モデルを最大限に活用できます。これは、高品質なエクスペリエンスを Spotlight ユーザーに迅速に配信するうえで不可欠な要素です」 – ソフトウェア エンジニアリング (情報管理) 担当エグゼクティブ ディレクター、Patrick O’Keeffe 氏

M-Files が提供するエンタープライズ情報管理ソリューションは、情報の垣根を取り払い、基幹業務用のあらゆるシステムやデバイスから適切なコンテンツへの迅速かつ簡単なアクセスを実現します。非クラスター化列ストア インデックスの使用により、ドキュメント データに対する分析クエリを高速に実行できるため、同社の顧客はスピーディにインサイトを得て有益な情報を見い出すことができます。

clip_image006

「光のようにすばやく分析クエリやオンライン トランザクションを処理できることは、M-Files の実装において欠かせない要素です。更新可能な非クラスター化列ストア インデックスが Azure SQL Database と Microsoft SQL Server 2016 に追加されたことで、オンライン トランザクション処理のパフォーマンスに大きな影響を与えることなく、顧客の重要なワークロードでのクエリ実行を 10 倍以上も高速化することができました。アプリケーションのコード変更も一切必要なく、オンプレミスのクライアントと Azure で実行される M-Files Cloud Vault ユーザーの両方ですぐに大幅なパフォーマンス向上が見られました」 – 創設者兼 CTO、Antti Nivala 氏

パフォーマンス向上とコスト削減の成果

インメモリ OLTP と列ストア インデックスでは、どちらも CPU や IO などのリソースの使用効率が高まることでパフォーマンスが向上します。Azure SQL Database の各料金レベルには一定量のリソースが割り当てられており、インメモリ テクノロジはリソースの使用効率が改善されるため、上位の料金レベルに変更しなくてもパフォーマンス向上を実現できます。別の見方をすれば、データベースでインメモリ テクノロジを採用することで、従来と同じレベルのパフォーマンスを下位の料金レベルで達成することができるということです。

以下は、Azure SQL Database でインメモリ OLTP を使用した場合のパフォーマンス結果です。

  • P15 (書き込み速度が最高の料金レベル) で注文処理のベンチマーク (英語) (スケール因子 100、クライアント数 400) を実施した結果、インメモリ OLTP を使用すると 75,000 トランザクション/秒 (TPS) を達成し、従来のテーブルとストアド プロシージャでの 6,800 TPS でと比べて、11 倍のパフォーマンス向上を記録しました。
  • 下位の料金レベルでもすばらしい結果が確認されました。P2 で同一のワークロード (スケール因子 5、クライアント数 200) を実施した結果、従来環境での 1,000 TPS に対して、インメモリ OLTP では 8,900 TPS でした。
  • 従来のテーブル値パラメーター (TVP) をメモリ最適化 TVP に置き換えることで、30 ~ 40% のパフォーマンス向上が得られました。詳細についてはブログ記事「Azure でインメモリ OLTP を使用して IoT データを高速で取得する (英語)」をお読みください。

次に、こちらのページのサンプルを使用した場合の列ストア インデックスによるパフォーマンス結果について紹介します。

  • P15 データベース (書き込み速度が最高の料金レベル) でクエリを実行したところ、列ストアを使用した場合の実行時間は 0.26 秒で、従来のインデックスとページ圧縮を使用した場合の実行時間は 15 秒でした。これは 58 倍ものパフォーマンス向上となります。
  • 下位の料金レベルでも大幅なパフォーマンス向上が確認されました。P1 データベースでクエリを実行した結果、列ストアを使用した場合の実行時間は 4.8 秒で、従来のインデックスとページ圧縮を使用した場合の実行時間は 27 秒でした。上位の料金レベルに変更することなく、パフォーマンスが 5.6 倍向上しています。

Azure SQL Database でインメモリ テクノロジを試すには

Azure SQL Database のインメモリ テクノロジの詳細情報や使用開始にあたってのヒントやサンプルは、SQL Database でのインメモリの使用に関するドキュメントをご確認ください。

ブログでは今後も各種インメモリ テクノロジの詳細情報をお伝えしてまいります。どうぞご注目ください!