BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース In-Memory技術を使用したAzure SQLデータベースのパフォーマンス改善

In-Memory技術を使用したAzure SQLデータベースのパフォーマンス改善

原文(投稿日:2017/01/21)へのリンク

2016年後半に、MicrosoftはAzure SQL Database In-Memory技術の一般向け提供(GA)を発表した。In-Memory処理は、Azure Premiumデータベースサービスでのみ利用可能で、Hybrid Transactional and Analytical Processing (HTAP)のシナリオに対して、On-line Transaction Processing(OLTP)、Clustered Columnstore Indexes、Non-clustered Columnstore Indexesのパフォーマンスが向上する。

Azure SQL Databaseは、SQL Serverで使っているものと同じIn-Memory技術を使っている。MicrosoftはSQL Server 2012とSQL Server 2014の、Columnstore IndexesとOLTPの両方にIn-Memory機能を導入した。

Microsoftは、OLTPのパフォーマンスを最大30%改善し、Analyticsのワークロードを最大100倍高速化したと述べている。以下を目指す組織向けにIn-Memoryのユースケースを位置づけている。

サービスレベルを変更することなく、スケールする余地を残しています。より効率的なクエリとトランザクション処理のために、In-Memory技術はコストを削減するのにも役立ちます。通常、パフォーマンスを向上させるためにデータベースの価格設定をアップグレードする必要はありません。場合によっては、In-Memory技術によるパフォーマンス向上を得ながら、価格設定を低くできるかもしれません。

Microsoftでは、Azure SQL DatabaseでIn-Memory技術を使用することにより、次のメリットを確認している

  • In-Memory OLTPではスループットが向上し、トランザクション処理の遅延が低減される。
  • クラスタ化カラムストアインデックスは、ストレージのフットプリント(最大10倍)を削減する。また、レポートおよび分析クエリのパフォーマンスを向上させる。データマート内のファクトテーブルと組み合わせて使用すると、より多くのデータを適切な形でデータベースに収め、パフォーマンスを向上させることができる。また、運用データベースの履歴データとともに使用することで、最大10倍のデータをアーカイブしてクエリを実行することができる。
  • HTAPの非クラスタ化カラムストアインデックスにより、運用データベースに直接クエリを発行することでリアルタイムにビジネスについて深く把握できる。そのために、コストが大きくなる抽出、変換、ロード(ETL)処理を実行する必要なく、また、データウェアハウスに投入されることを待つ必要はない。非クラスター化カラムストアインデックスにより、OLTPデータベースで分析クエリを非常に高速に実行でき、運用ワークロードへの影響を軽減できる。
  • In-Memory OLTPとカラムストアインデックスを組み合わせることもできる。カラムストアインデックスを持つメモリ最適化されたテーブルを作成できる。これにより、非常に高速なトランザクション処理を実行し、同じデータに対して非常に高速に分析クエリを実行することができる。

最近のData Exposedのエピソードとして、MicrosoftのシニアテクニカルエバンジェリストのScott Klein氏とシニアプログラムマネージャのJos de Bruijn氏がAzure SQL Database In-Memory処理のデモを披露した。彼らが作成したアプリケーションは、Internet of Things (IoT)デバイスの遠隔測定をシミュレートした。このデモでは、100万メートルの発信デバイスによる読み取りのシミュレーションを実施した。最初のデモでは、Azure SQL DatabaseでIn-Memoryオブジェクトを有効にしなかった。その結果、CPUとLog IOの両方にかなりの負荷がかかった状態となり、CPU使用率が約89%、Log IOが86%に達した。In-Memoryで最適化されたオブジェクトを導入すると、CPU使用率は10.47%に減少し、Log IOは34%に減少しました。

画像ソース:(スクリーンショット)https://channel9.msdn.com/Shows/Data-Exposed/In-Memory-OTLP-in-Azure-SQL-DB

開発者は、パフォーマンスに影響する高負荷が発生すると、Azure SQL Database Throughput Units (DTU)を増やしたくなるかもしれない。パフォーマンスの課題に対する答えは、スケールアップするのではなく最適化にある。Quorum Business SolutionsのソリューションアーキテクトであるMark Freydl氏は次のように説明している

24時間365日稼動させなければならない石油とガスのためのIoTプラットフォームではパフォーマンスのスケーラビリティは重要です。いくつかの主要な操作のために、In-Memory OLTPテーブルとネイティブコンパイルされたストアドプロシージャをAzure SQL Databaseに追加することで、直後にDTU全体の消費量が70%削減できました。

Microsoftでは、IoTによる遠隔測定の例に加えて、金融取引、ゲーム、ASP.Netセッション管理、Tempdbの置き換え、効率の悪いExtract Transform Load(ETL)操作の回避など、In-Memory処理のユースケースを挙げている。

画像ソース:(スクリーンショット)https://channel9.msdn.com/Shows/Data-Exposed/In-Memory-OTLP-in-Azure-SQL-DB

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT