Amazon Web Services ブログ

パフォーマンスの重要性: Amazon Redshift で実環境のワークロードが 3.5 倍の速さに

Amazon Redshift はそのサービスの開始以来、高度な複雑性を持つ分析ワークロードにも妥協を許さない高速処理で数千におよぶお客様の信頼を得てきました。2017 年にお客様にもたらした 3 倍から 5 倍のパフォーマンスゲインの実現には、ショートクエリの高速化、結果キャッシュ、遅延マテリアライゼーション、そのほか重要な多数の改善点が貢献しています。本記事では、Amazon Redshift の最新の改善活動や、パフォーマンス向上への絶え間ない取組みがお客様を支援している様子をご紹介します。また、今でも継続中の改善活動の評価に利用していた業界標準のベンチマークから得られたパフォーマンステストを考察します。

最新のパフォーマンス改善活動

AWS はそのデータウェアハウスの世界最大規模のデプロイメントによって、さまざまな分析ワークロードにわたる使用パターンを分析し、パフォーマンス向上のための機会を探り出します。そこから得た知見は数千におよぶお客様の利益にシームレスにつながる改善をもたらします。パフォーマンス面における過去 6 か月間の主な改善点は、次のとおりです。

  • メモリ重視型クエリ用途のリソース管理の改善: Amazon Redshift で結合時と集計時のメモリの消費および予約プロセスが向上しました。これにより、大多数のハッシュテーブルに対するキャッシュの効率性を向上させ、メモリ重視型の結合および集計操作の洩れの低減を最大で 1.6 倍改善しました。
  • コミットのパフォーマンス改善: コミットは書き込みトランザクションの主なコンポーネントとして、ETL (抽出、変換、ロード) ジョブといったデータアップデートおよびデータインジェスチョンのワークロード処理のパフォーマンスに直接インパクトを与えます。2017 年 11 月以降、コミットのパフォーマンスの最適化活動の一環として、複数コミットを 1 回の操作で行うバッチ処理、コミットロック性能の向上、データ局所性認識型のメタデータのデフラグ用プログラムなどを実現してきました。これらに代表される最適化活動は、HDD ベースのクラスターでかかるコミット時間の低減効果を平均で 4 倍にしています。大量トランザクション (Amazon Redshift のコミット操作の上位 5%) では、最適化効果は 7.5 倍になっています。
  • 繰り返しクエリのパフォーマンス改善: Amazon Redshift の結果キャッシュ、ダッシュボード、可視化、ビジネスインテリジェンス (BI) ツールが繰り返しクエリを実行すると、パフォーマンスを大幅に向上します。さらに、結果キャッシュで解放されるリソースにより、他のすべてのクエリのパフォーマンスが向上します。
  • クエリ処理の改善: Amazon Redshift は繰り返しサブクエリ、述語を使用した高度分析用関数、重複作業を避けて工程を合理化することによる複雑なクエリプランなどの事例では、そのパフォーマンスは 2 倍から 6 倍高速化しています。
  • 文字列操作の高速化: Amazon Redshift は効率化の進んだコード生成技術のため、よく使う文字列関数ではパフォーマンスが 5 倍向上しています。

デフォルト設定のままですぐにでも使用できるこれらの改善点に加えて、Amazon Redshift Advisor がパフォーマンス向上のために状況に応じた推奨事項を低価格で提供することで補完します。Amazon Redshift Advisor はサービスを開始した 2018 年 7 月以来、ほぼ 50,000 件の推奨事項を提案しています。

これらすべての最適化活動は、AWS の分析プラットフォームのユーザーであるお客様がインサイト取得を高速化する能力を目に見える形で引き上げ、実行時間を日次ベースで数千時間分を省力化しています。これは、最大規模のデプロイメントにも適用可能です。お客様が Redshift クラスター内に数ペタバイト規模のデータを保持しているようなケースや、Amazon Redshift Spectrum と合わせて Amazon S3 データレイク内のさらに巨大なデータにシームレスにアクセスする環境を持っているようなケースがそれにあたります。「こちらのデータ量が増大しても、Redshift のクエリ実行のパフォーマンスおよびスケーラビリティは拡大を続けています」と語るのは、Cookpad Inc. のシニアデータエンジニア Minero Aoki 氏です。「過去 10 か月間にコミットパフォーマンスは 500% 上昇しましたが、コストは増えていません」

ベンチマークで成功を評価

現在展開中の改善活動を評価するために、私たちは毎日夜間にパフォーマンス評価をしており、そのために TPC-DS のような業界標準のベンチマークから得たクエリを実行しています。また、ほかのデータウェアハウスサービスに対して、時折 Amazon Redshift のベンチマーク評価をしています。こうした評価を、お客様の実際の使用状況に反映させていることは、すでに申し上げたとおりです。その結果、Amazon Redshift が 2 週に 1 回のペースのリリースごとに本当に改善しているか測定できます。

過去 2 ~ 3 か月間の Amazon Redshift のリリースを半年前のリリースと比較すると、Amazon Redshift は 3.5 倍高速化しており、実行したクエリの 99 件すべてが TPC-DS ベンチマークから取得したものでした。以下のグラフをご覧ください。

注意: 本調査では、TPC-DS から取得した Cloud DW ベンチマークを使用しました。そのため、Cloud DW ベンチマークは TPC-DS の公開結果とは比較できません。TPC Benchmark および TPC-DS は、トランザクション処理性能評議会 (Transaction Processing Performance Council) の商標です。

また、本記事用に、TPC-DS から取得した Cloud DW ベンチマークを使用して、Amazon Redshift の最新リリースと Microsoft Azure SQL Data Warehouse を比較しました。Amazon Redshift には dc2.8xlarge を、Azure SQL Data Warehouse には DW2000c Gen2 を使用し、双方のサービスにおいて 4 ノードクラスター上で 3 TB のデータセットに対しクエリを実行しました。Azure では、パブリッシュ時の容量制約のため、30 TB のデータセットに必要な DW15000c クラスターを割り当てていないので、さらに大きなデータセットは実行できませんでした。

1 ユーザーが 99 のクエリすべてを実行する場合、Amazon Redshift は Azure SQL Data Warehouse の 15 倍速、また、4 ユーザーが同時にクエリを実行する場合では、14 倍速いことが観測されました。Azure SQL Data Warehouse では、完了に数時間を要した外れ値のクエリが 2 つありました。時間のかかったその 2 つのクエリを除くと、Amazon Redshift は Azure SQL Data Warehouse と比べ、1 ユーザーの場合で 2 倍、4 ユーザー同時の場合で 1.6 倍の速さでした。下のグラフは、2 つのサービスを比較したものです。

注意: この調査では、TPC-DS v2.9 に基づくクエリを使用しました。Amazon Redshift および Azure SQL DW ではロールアップクエリをサポートしていないため、クエリ 5、14、18、27、36、67、70、77、80、86 には TPC-DS 提供の変形を使用しました。Amazon Redshift については、5 つのクエリの同時実行が可能な初期ワークロード管理設定を追加設定なしで使用しました。Azure SQL DW については、最小同時実行クエリ数が 4 つのリソースクラス “largerc” を使用しました。Amazon Redshift では全 99 クエリの実行に 25 分かかりました。一方、Azure SQL Data Warehouse では 6.4 時間かかりました。Azure SQL Data Warehouse での実行に 1 時間以上かかった 2 つのクエリ (Q38 と Q67) を除くと、Amazon Redshift では 22 分、Azure SQL Data Warehouse では 42 分かかりました。

 

Amazon Redshift の評価

他のデータウェアハウスサービスに対するベンチマークには興味深いものがありますが、その価値は限定的です。まず、万能のベンチマークというものは存在しません。それぞれのサービスに、実環境における固有の使用パターンと、これに合わせた構成や調整の方法があります。一般に手に入るガイダンスに基づいてサービスを構成するよう最大の努力を払っていますが、いかなるサービスに対しても最適のパフォーマンスを出すと保証することはできません。これは例えば、Amazon Redshift の強力なディストリビューションやソートキーを使用していないサードパーティーのベンチマークでよく見られます。ただし、お客様の大多数は Amazon Redshift の強力なディストリビューションやソートキーを使用しています。

同様に、各ベンチマークのクエリは 1 度しか実行できず、観察されるクエリの 99.5% がコンパイルのキャッシュで見つかるコンポーネントを含むという実環境のシナリオとは対照的です (Amazon Redshift は各クエリの実行計画のコードを生成してコンパイルします。コンパイルされたコードセグメントは、最も長い間使われていなかったキャシュに保存され、クラスターのセッション間で共有されます)。別な言い方をするなら、それらは以前実行されたクエリと類似しているということです。したがって、ベンチマーク調査で測定されるクエリの実行時間は、コンパイル時間について過剰にインデックスを作成することになるため、実際に得られるパフォーマンスを表していない可能性があります。

次に、この調査は必然的に、ある時点での評価に過ぎません。クラウドベンダーはサービスを更新して進化させるので、ベンチマークの数値はパブリッシュ時点で既に古いものになっているかもしれません。

したがって、自身のデータとクエリのワークロードには固有の特徴があるため、このベンチマークに基づいて製品を選択することは推奨しません。自身の分析プラットフォームに関して Amazon Redshift を評価したい場合には、PoC (概念実証) ガイドを作成してありますので、そちらを参照してください。また、当社にサポートを求めたり、いずれかのシステム統合およびコンサルティングパートナーと協同してデータに基づく意思決定を下したりすることも可能です。

最後になりますが、ぜひ最近の Fireside chat ウェビナーをご覧になり、ラスベガスでの re:Invent 2018 にご参加ください。皆さんにお伝えしたいエキサイティングなニュースが盛りだくさんです。クエリをお楽しみください。

ベンチマークの再現について説明が必要な場合は、redshift-pm@amazon.com にお問い合わせください。ご質問またはご提案については、以下でコメントを残してください。


著者について

Ayush Jain は アマゾン ウェブ サービスのプロダクトマーケターです。クラウドサービスの成長と、クラウドのデプロイの価値を高められるようお客様を支援することに喜びを感じます。デベロッパーやデータサービスでのソフトウェア開発、製品管理、製品マーケティングに関する何年もの経験があります。

 

 

 

Mostafa Mokhtar は Redshift のパフォーマンスを担当するエンジニアです。 以前は、Cloudera、Hortonworks、Microsoft の SQL Server チームで同様の役割を担っていました。