Amazon Web Services ブログ
Amazon Redshift の継続的なコストパフォーマンス最適化
本記事はAmazon Web Services, Senior Performance Engineer with Amazon Redshift である Stefan Gromoll 、Senior Product Management leader in the Redshift Team である Ravi Animi 、 Performance Engineer with Amazon Redshift である Florian Wende によって 2022 年 4 月に投稿されたものです。
データは戦略的な資産です。データからタイムリーに価値を引き出すには、コストを抑えながら大規模にパフォーマンスを提供できる高性能なシステムが必要です。Amazon Redshift は幅広く使われているクラウドデータウェアハウスの1つで、何万ものお客様が毎日エクサバイトのデータを分析するために使用しています。お客様がより多くのデータを Amazon Redshift に取り込みながらも、コストパフォーマンスを向上させることができるように、私たちは新しい機能を追加し続けています。
この記事では、Amazon Redshift フリートのテレメトリデータから見られる分析ワークロードの傾向、Amazon Redshift のコストパフォーマンスを改善するために立ち上げた新機能、TPC-DS と TPC-H から派生した最新のベンチマークの結果について詳しく説明します。
データドリブンなパフォーマンス最適化
私たちは、Amazon Redshift のコストパフォーマンスの向上に常に注力し、お客様が実際のワークロードの改善を確認し続けることができるように努めています。この目的のために、Amazon Redshift チームはパフォーマンス最適化のためにデータドリブンなアプローチを採用しています。AWS の CTO である Werner Vogels は、「Amazon Redshift and the art of performance optimization in the cloud」で私たちの方法論について説明しています。私たちは、お客様にとって最も重要な Amazon Redshift のパフォーマンス向上を推進するために、大規模に利用していただいているお客様のパフォーマンステレメトリデータを活用しています。
この時点で、なぜコストパフォーマンスが重要なのか疑問に思われるかもしれません。 データウェアハウスの重要な側面の 1 つに、データの増大に合わせてどのようにスケールするかという点があります。データを追加すればそれに応じてTBあたりのコストが増えるでしょうか、それとも一定で予測可能な状態に維持できているでしょうか? Amazon Redshift は、データの増加に応じて強力なパフォーマンスを発揮するだけでなく、変わらないコストパフォーマンスも確実に提供できるよう取り組んでいます。
高い同時実行性、低レイテンシーのワークロードの最適化
私たちが観測した傾向の 1 つは、低レイテンシーのクエリで高い同時実行性を必要とする分析アプリケーションを構築するお客様が増えていることです。データウェアハウスの文脈では、応答時間に関する SLA が 5 秒未満であるクエリを実行しているユーザーが数百人、さらには数千人いるということを意味します。
Amazon Redshift 活用の一般的なシナリオは、非常に多くのアナリストに分析を提供するビジネスインテリジェンスダッシュボードです。たとえば、外国為替レートを処理し、そのデータに基づく知見をエンドユーザーに提供しているお客様がいます。これらのお客様は、Amazon Redshift に対して平均 200 件の同時クエリを生成し、市場の始値と終値で 1,200 件の同時クエリに急増する可能性があり、それらのクエリのSLAは90パーセンタイルで1.5秒という要件です。Amazon Redshift はこの要件を満たすことができるため、このお客様はビジネス SLA を満たすことができ、エンドユーザーに実現可能な最高のサービスを提供できます。
私たちが追跡している特定のメトリクスは、すべてのクラスターで実行されたショートクエリ (実行時間が 1 秒未満のクエリ) に費やされた実行時間の割合です。次の図に示すように、2021 年に Amazon Redshift フリートで実行されたショートクエリのワークロードが大幅に増加しています。
Amazon Redshift がこのような種類のワークロードをどのように実行しているかを詳しく調べることで、パフォーマンスを最適化して短いクエリのスループットをさらに向上させる機会を見つけました。
- Amazon Redshift のクエリプランニングのオーバーヘッドを大幅に削減しました。これに長時間を要するわけではありませんが、短いクエリの実行時間にとってはかなりの部分を占める可能性があります。
- 多数の同時実行プロセスが同じリソースをめぐって競合するような状況における複数のコアコンポーネントのパフォーマンスを向上させました。これにより、クエリのオーバーヘッドがさらに削減されました。
- クエリの並列実行を改善できるように、これらの短いクエリを Concurrency Scaling クラスターにさらに効率的にバーストできるような取り組みをしました。
このような技術的な改善を行った後の Amazon Redshift の状況を確認するために、TPC-DS から派生した Cloud Data Warehouse ベンチマークを使用して内部テストを実施しました ( ベンチマークの詳細については、この投稿の後半のセクションを参照してください。GitHub で公開されています。) 。私たちは、高い同時実行性と低レイテンシーのワークロードをシミュレートするために、すべてのクエリが数秒以内に実行されるように、10 GB の小さなデータセットを使用しました。また、他の複数のクラウドデータウェアハウスに対しても同じベンチマークを実行しました。このテストでは、Amazon Redshift で Concurrency Scaling のような Auto Scaling 機能を有効にしませんでした。これは、すべてのデータウェアハウスが同様の機能をサポートしているわけではないためです。Amazon Redshift クラスター では ra3.4xlarge を使用し、その他すべてのウェアハウスは、オンデマンド料金を使用して、最も近い価格となる構成にサイジングしました。この条件設定においては、次の図に示すように、低レイテンシーで同時実行性の高い短いクエリを主に必要とする分析アプリケーションで、Amazon Redshift は、最大 8 倍のパフォーマンスを提供できることがわかりました。
Amazon Redshift の Concurrency Scaling を使用すると、ユーザーの同時実行性が増大するとともに、スループットをシームレスかつ自動的に追加の Amazon Redshift クラスターにスケーリングできます。私たちは、テレメトリデータから、このような分析アプリケーションをAmazon Redshift を使用して構築するお客様が増えていることを確認しています。
これは、パフォーマンスの向上とコスト削減を支援するために、データドリブンなアプローチを使用して当社のチームが継続的に行っている裏側の技術的な改善のほんの一部にすぎません。
コストパフォーマンスを向上させる新機能
データ活用を取り巻く状況が絶えず進化する中、お客様は、ハイパフォーマンスなデータウェアハウスを求めています。それには、すべてのワークロードとアプリケーションのコストを低く抑えながら、規模に応じて最高のパフォーマンスを提供できる新機能を継続的に提供することが求められます。私たちは、Amazon Redshift のコストパフォーマンスを向上させる機能を追加費用なしで追加し続けており、あらゆる規模のビジネス上の問題を解決できます。これらの機能には、 AWS Nitro System によるクラス最高のハードウェアの使用、AQUA によるハードウェアアクセラレーション、マテリアライズドビューを使用してより高速に実行できるようにする自動クエリ書き換え ( Automatic query rewriting )、スキーマ最適化のための自動テーブル最適化 ( Automatic Table Optimization; ATO )、動的な同時実行性を提供し、リソース使用率の最適化を行う自動ワークロード管理 ( Automatic Workload Management; WLM ) 、ショートクエリアクセラレーション ( Short query acceleration; SQA )、自動マテリアライズドビュー ( Automated Materialized Views; AutoMV )、CPU ベクトル命令と単一命令/複数データ( Single Instruction Multiple Data; SIMD )処理などがあります。Amazon Redshift は、自己学習し、セルフチューニングを行うデータウェアハウスへと進化し、必要なパフォーマンス管理の労力を抽象化しました。利用者は、分析アプリケーションの構築などの価値の高いアクティビティに集中できるようになりました。
最新の Amazon Redshift のパフォーマンス強化の効果を検証するために、私たちは、Amazon Redshift と他のクラウドデータウェアハウスを比較するコストパフォーマンスベンチマークを実施しました。これらのテストでは、Amazon Redshift クラスターr a3.4xlarge 10 ノードを使用して、TPC-DS から派生したベンチマークと TPC-H から派生したベンチマークの両方を実行しました。他のデータウェアハウスでテストを実行するために、Amazon Redshift クラスターに最も近い価格 (1 時間あたり 32.60 USD) となるウェアハウスのサイズを選択しました。すべてのデータウェアハウスに公開されているオンデマンド料金を使用しました。Amazon Redshift は自動チューニングウェアハウスであるため、すべてのテストは「out of the box」な状態で実施しました。つまり手動チューニングや特別なデータベース設定は適用せず、クラスターを起動して、そのままの状態でベンチマークを実行しました。次に、価格パフォーマンスは、1時間あたりのコスト(USD)にベンチマーク実行時間を掛けたものとして計算されます。これは、ベンチマークを実行するためのコストに相当します。
TPC-DS から派生したテストと TPC-H から派生したテストの両方で、Amazon Redshift が一貫して最も良いコストパフォーマンスを発揮していることがわかりました。次のグラフは、TPC-DS から派生したベンチマークの結果を示しています。
次のグラフは、TPC-H から派生したベンチマークの結果を示しています。
これらのベンチマークでも Amazon Redshift の優れたコストパフォーマンスを発揮していることが確認できますが、Amazon Redshift がお客様の要件を満たすことができるかを確かめる最良の方法として、お客様独自のPOCを実施することを常にお勧めしています。
ワークロードに最適なコストパフォーマンスを発見
この記事で使用されているベンチマークは、業界標準の TPC-DS および TPC-H ベンチマークから派生したもので、次のような特徴があります。
- スキーマとデータは TPC-DS および TPC-H から変更せずに使用しています。
- クエリは TPC-DS および TPC-H から変更せずに使用しています。データウェアハウスがデフォルトの TPC-DS または TPC-H クエリの SQL 文法をサポートしていない場合、TPC で承認されたクエリとは多少異なったものを使用しています。
- このテストには、99 個の TPC-DS と 22 個の TPC-H の SELECT クエリのみが含まれます。メンテナンスとスループットのステップは含まれません。
- TPC-DS および TPC-H キットのデフォルトのランダムシードを使用して生成されたクエリパラメータを使用して、3 回のPower Run (訳注: 並列実行数 1 でのクエリ実行のこと)を実行しました。
- コストパフォーマンスを算出する際に、主要なメトリクスとしてクエリ実行時間の合計を使用しました。実行時間は 3 回の実行のうち、最良のものを採用しました。
- コストパフォーマンスは、1 時間あたりのコスト (USD) にベンチマーク実行時間を掛けた値として計算しました。これは、ベンチマークを実行するためのコストに相当します。すべてのデータウェアハウスで、公開されたオンデマンド料金を使用しました。
私たちは、このベンチマークを Cloud Data Warehouse ベンチマークと呼んでおり、 GitHub で利用可能なスクリプト、クエリ、データを使用して、前述のベンチマーク結果を簡単に再現できます。これは、前述の TPC-DS および TPC-H ベンチマークから派生したものであり、テストの結果が仕様に準拠していないため、公開されている TPC-DS または TPC-H の結果と比較することはできません。
各ワークロードには固有の特性があるため、Amazon Redshift がお客様の要件に対してどのように機能するかを理解するには、POCが最適な方法です。独自のPOCを実行する際には、クエリのスループット (1 時間あたりのクエリ数) とコストパフォーマンスといった適切なメトリクスに注目することが重要です。POCを自分自身で実行するか、AWSまたはシステムインテグレーションおよびコンサルティングパートナーの支援を受けて、データドリブンな意思決定を行うことができます。
まとめ
この記事では、Amazon Redshift のお客様から見られる分析ワークロードの傾向、Amazon Redshift のコストパフォーマンスを改善するために立ち上げた新機能、最新のベンチマークの結果について説明しました。
すでにAmazon Redshift をご利用の場合には、AWS re: Invent 2021 で発表された新機能に関する無料の最適化セッションとブリーフィングのために、私たちにご連絡ください。Amazon Redshift の最新の開発情報を入手するには、 Amazon Redshift の新機能 RSS フィードを購読してください。
原文はこちらです。
本ブログは Solutions Architect の池田が翻訳しました。