キャパシティ要件を決定する - Amazon Athena

キャパシティ要件を決定する

キャパシティ予約を作成する前に、必要なキャパシティを見積もることで、正しい数の DPU を割り当てることができます。また、予約の使用後は、予約のキャパシティが不足していないか、超過していないかを確認するとよいでしょう。このトピックでは、これらの見積もりに使用できる手法について説明し、使用状況とコストを評価するためのいくつかの AWS ツールについても説明します。

必要なキャパシティを見積もる

キャパシティ要件を見積もるときは、特定のクエリに必要なキャパシティと、一般的に必要なキャパシティという 2 つの観点を考慮すると効果的です。

クエリごとのキャパシティ要件を見積もる

クエリで必要な DPU の数を判断するには、次のガイドラインを使用します。

  • DDL クエリは 4 個の DPU を消費します。

  • DML クエリは 4〜124 個の DPU を消費します。

Athena は、クエリが送信されるときに DML クエリに必要な DPU の数を決定します。この数は、データサイズ、ストレージ形式、クエリ構造、およびその他の要因によって変わります。通常、Athena は最も少なく、最も効率的な DPU 数を選択しようとします。Athena は、クエリを正常に完了するためにより多くの計算能力が必要であると判断した場合、クエリに割り当てられる DPU の数を増やします。

ワークロード固有のキャパシティ要件を見積もる

複数のクエリを同時に実行するために必要な容量を判断するには、次の表にある一般ガイドラインを考慮してください。

同時クエリ 必要な DPU
10 40 またはそれ以上
20 96 以上
30 またはそれ以上 240 以上

実際に必要な DPU の数は、目標と分析パターンによって異なることに注意してください。たとえば、クエリをキューに入れずにすぐに開始したい場合は、ピーク時の同時クエリ需要を判断し、それに応じて DPU の数をプロビジョニングします。

プロビジョニングする DPU の数は、ピーク需要よりも少なくても構いませんが、ピーク需要が発生するとキューイングが発生する可能性があります。キューイングが発生すると、Athena はクエリをキューに保持し、キャパシティが利用可能になるとクエリを実行します。

固定予算内でクエリを実行することが目標であれば、「AWS 料金計算ツール」を使って予算に合う DPU 数を特定できます。

最後に、データサイズ、ストレージ形式、およびクエリの記述方法が、クエリに必要な DPU に影響することを覚えておいてください。データを圧縮または分割したり、列形式に変換したりすることで、クエリのパフォーマンスを向上させることができます。詳細については、「Athena のパフォーマンスを最適化する」を参照してください。

より多くのキャパシティが必要であることを示す兆候

割り当てられたキャパシティが不十分であることの 2 つの兆候として、キャパシティ不足のエラーメッセージとクエリキューイングがあります。

キャパシティ不足のエラーメッセージが表示されてクエリが失敗した場合、クエリに対してキャパシティ予約の DPU 数が少なすぎる可能性があります。たとえば、DPU 24 個の予約があり、24 個よりも多い DPU を必要とするクエリを実行すると、クエリは失敗します。Athena の EventBridge イベントを使用してこのクエリエラーを監視することができます。DPU をさらに追加してクエリを再実行してみてください。

多くのクエリがキューに入っている場合は、キャパシティがすべて他のクエリに使用されていることを意味します。キューを減らすには、次のいずれかの操作を行います。

  • 予約に DPU を追加して、クエリの同時実行性を向上させます。

  • 予約からワークグループを削除して、他のクエリに使えるキャパシティを増やします。

キャパシティ予約内のワークグループ内で Athena クエリキュー時間の CloudWatch メトリックを使用して、クエリキューイングが過剰になっていないかどうかを確認します。値が希望のしきい値を超える場合は、キャパシティ予約に DPU を追加します。

アイドル状態のキャパシティを確認する

アイドル状態のキャパシティを確認するには、予約内の DPU の数を減らすか、ワークロードを増やしてから結果を確認します。

アイドル状態のキャパシティを確認するには
  1. 次のいずれかを行います。

    • 予約内の DPU の数を減らします (利用可能なリソースを減らす)。

    • 予約にワークグループを追加します (ワークロードを増やす)。

  2. CloudWatch を使用してクエリキュー時間を測定します。

  3. キュー時間が望ましいレベルを超えて増加した場合は、次のいずれかの操作を行います。

    • ワークグループを削除します。

    • キャパシティ予約に DPU を追加します。

  4. 変更のたびに、パフォーマンスとクエリキュー時間を確認します。

  5. 引き続きワークロードや DPU 数を調整して、望ましいバランスをとってください。

望ましい時間を超えるキャパシティを維持したくない場合は、予約をキャンセルして後で別の予約を作成します。ただし、最近別の予約からキャパシティをキャンセルしていたとしても、新しいキャパシティのリクエストが保証されるわけではなく、新しい予約の作成には時間がかかります。

AWS の以下のサービスと機能を使用して、Athena の使用状況とコストを測定できます。

CloudWatch メトリクス

クエリ関連のメトリックスをワークグループレベルで Amazon CloudWatch に公開するように Athena を設定できます。ワークグループのメトリックスを有効にすると、ワークグループのクエリに関するメトリックスがワークグループの詳細ページの Athena コンソールに表示されます。

CloudWatch に公開される Athena メトリックスとそのディメンションについては、「CloudWatch による Athena クエリメトリクスのモニタリング」を参照してください。

CloudWatch の使用状況メトリクス

CloudWatch の使用状況メトリクスにより、CloudWatch グラフやダッシュボード上に現在のサービスの使用状況を表示することで、アカウントがどのようにリソースを使用しているかを可視化できます。Athena での使用可能性に関するメトリクスは、Athena の AWSService Quotas と対応しています。使用量がサービスクォータに近づいたときに警告するアラームを設定することもできます。

詳細については、「CloudWatch による Athena 使用状況メトリクスのモニタリング」を参照してください。

Amazon EventBridge イベント

Amazon Athena を Amazon EventBridge と使用し、クエリの状態に関するリアルタイムの通知を受け取ることができます。送信したクエリの状態が変更されると、Athena がそのクエリの状態推移に関する情報が含まれるイベントを EventBridge に発行します。関心のあるイベントのシンプルなルールを作成し、イベントがルールに一致したときに自動化されたアクションが実行されるようにできます。

詳細については、以下のリソースを参照してください。

タグ

Athena では、キャパシティ予約がタグをサポートしています。タグは、キーと値から構成されています。Athena でコストを追跡するには、AWS 生成のコスト配分タグを使用できます。AWS はコスト配分タグを使用し、[コストと使用状況のレポート] でリソースのコストを整理します。これにより、AWS コストを簡単に分類して追跡できるようになります。Athena のコスト配分タグを有効にするには、AWS Billing and Cost Management コンソールを使用します。

詳細については、以下のリソースを参照してください。