

# キャパシティ使用量を制御する
<a name="capacity-management-control-capacity-usage"></a>

Athena がクエリに割り当てる DPU の数は、最大または最小の DPU コントロールを設定することで制御できます。すべてのクエリのベースラインコントロールを確立する場合はワークグループレベルでこれらを設定でき、きめ細かなコントロールを求める場合は個々のクエリレベルで設定できます。これにより、クエリのパフォーマンス、ワークロードの同時実行数、コストを直接制御できます。
+ DPU 数を最大に設定すると、クエリによるキャパシティ消費量が指定した量を超えません。これにより、コストとワークロードの同時実行を簡単に制御できます。例えば、キャパシティ予約に DPU が 200 個ある場合、クエリ 1 件あたりの最大 DPU 数を 8 に設定すると、25 件のクエリを同時に実行できます。予約の DPU を 400 に増やすと、50 件のクエリを同時に実行できます。
+ DPU 数を最小に設定すると、希望する最小数の DPU でクエリが実行されます。これは、クエリの一般的なキャパシティ使用プロファイルを事前に把握している場合に役立ちます。

**注記**  
DPU 使用コントロールは、キャパシティ予約で実行されるクエリにのみ適用されます。

**注記**  
すべてのクエリに同じ数の DPU を使用するには、最小 DPU と最大 DPU に同じ値を使用します。

## ワークグループレベルで DPU コントロールを設定する
<a name="capacity-management-set-dpu-controls-workgroup-level"></a>

DPU コントロールをワークグループレベルで設定して、コストを管理し、選択したワークグループのワークロードパフォーマンスを制御します。ワークグループレベルで設定された DPU コントロールは、**[クライアント側設定の上書き]** が有効になっている場合、すべてのクエリに適用されます。

**コンソールを使用して DPU コントロールを設定する方法**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. ナビゲーションペインで、**[Global networks (グローバルネットワーク)]** を選択します。

1. キャパシティ予約を使用するワークグループを選択します。

1. **[実行コントロール]** タブで、**[コントロールの編集]** を選択します。

1. 次を設定します。
   + **[クエリあたりの最小 DPU]** では、4～124 の範囲内の値を 4 単位で入力します。
   + **[クエリあたりの最大 DPU]** では、4～124 の範囲内の値を 4 単位で入力します。

1. **[保存]** を選択します。

1. （オプション）**[クライアント側設定の上書き]** を選択してこれらの設定を適用し、クエリレベルの DPU 設定を無視します。

**AWS CLI を使用して DPU コントロールを設定する方法**
+ `update-work-group` コマンドを使用してワークグループの DPU コントロールを設定します。

  ```
  aws athena update-work-group \
    --work-group "my_workgroup" \
    --configuration-updates '{
          "EngineConfiguration": {
              "Classifications": [
                  {
                      "Name": "athena-query-engine-properties",
                      "Properties": {
                          "max-dpu-count" : "24",
                          "min-dpu-count" : "12"
                          }
                      }
                  ]
          }}'
  ```

  `EnforceWorkGroupConfiguration` を `true` に設定すると、ワークグループ設定は、[StartQueryExecution](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html) 経由で送信したときにクエリレベルで指定された DPU コントロールを上書きします。これにより、ワークグループ内のすべてのクエリにおけるリソース割り当ての一貫性が確保されます。

## 個々のクエリで DPU コントロールを設定する
<a name="capacity-management-set-dpu-controls-individual-queries"></a>

クエリにさまざまなリソース要件があってきめ細かな制御が必要である場合は、クエリレベルの DPU コントロールを設定します。ワークグループで **[クライアント側設定の上書き]** が有効になっていない限り、クエリレベルの DPU コントロールはワークグループレベルの設定よりも優先されます。

**コンソールを使用してクエリの DPU コントロールを設定する方法**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. ナビゲーションペイン内で **[クエリエディタ]** を選択します。

1. キャパシティ予約を使用するワークグループを選択します。

1. **[クエリ設定]** タブを選択します。

1. **[実行コントロール]** セクションで、**[コントロールの編集]** を選択します。

1. 次を設定します。
   + **[クエリあたりの最小 DPU]** では、4～124 の範囲内の値を 4 単位で入力します。
   + **[クエリあたりの最大 DPU]** では、4～124 の範囲内の値を 4 単位で入力します。

1. **[保存]** を選択します。

**AWS CLI を使用してクエリの DPU コントロールを設定する方法**
+ `engine-configuration` パラメータがある `start-query-execution` コマンドを使用します。

  ```
  aws athena start-query-execution \
    --query-string "SELECT * FROM my_table LIMIT 10" \
    --work-group "my_workgroup" \
    --engine-configuration '{
      "Classifications": [ {
          "Name": "athena-query-engine-properties",
              "Properties": {
                  "max-dpu-count" : "32",
                  "min-dpu-count" : "8"
                  }
              }
          ]}'
  ```

クエリレベルとワークグループレベルの DPU 設定の関係は、ワークグループ設定によって異なります。
+ **[クライアント側設定の上書き]** が有効になっている場合、ワークグループレベルの DPU コントロールは、クエリレベルの設定よりも優先されます。これにより、指定したワークグループ内のすべてのクエリにおけるリソース使用の一貫性が確保されます。
+ **[クライアント側設定の上書き]** が有効になっていない場合、クエリレベルの DPU コントロールがワークグループレベルの設定よりも優先されます。これにより、個々のクエリを柔軟に最適化できます。

どちらのレベルでも DPU コントロールを指定しない場合、Athena がクエリの複雑さに基づいてキャパシティを自動的に割り当てます。

**注記**  
DDL クエリの場合、最小 DPU の最大値は 4 です。DDL クエリの最小値を大きめに設定するとエラーが発生します。

## DPU 使用をモニタリングする
<a name="capacity-management-monitor-dpu-usage"></a>

クエリが完了したら、DPU の使用状況を表示できます。Athena は、コンソール、API オペレーション、CloudWatch を通じて DPU 使用メトリクスを提供します。

**コンソールで DPU 消費量を表示する方法**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. ナビゲーションペイン内で **[クエリエディタ]** を選択します。

1. クエリが完了したら、クエリ結果コンテナで **[消費された DPU]** 値を表示します。

1. 過去のクエリの DPU 消費量を表示する方法

   1. ナビゲーションペインで **[最近のクエリ]** を選択します。

   1. **[消費された DPU]** 列がテーブルにまだ表示されていない場合は、設定アイコンを選択してその列を追加します。

   1. 完了した各クエリの DPU 消費量を確認します。

1. 必要に応じて、**[クエリエディタ]** から **[クエリ統計]** タブを選択し、**[消費された DPU]** を確認します。

**API を使用して DPU 消費量を取得する方法**

1. 次の API オペレーションを使用して、DPU 消費量をプログラムで取得します。
   + `GetQueryExecution` - 特定のクエリの実行の詳細情報を返す
   + `BatchGetQueryExecution` - 複数のクエリの実行の詳細情報を返す

1. AWS CLI を使用する例:

   ```
   aws athena get-query-execution \
     --query-execution-id "123e4567-e89b-12d3-a456-426614174000"
   ```

   応答には `Statistics` オブジェクトの `DpuCount` フィールドが含まれます。

   ```
   {
     "QueryExecution": {
       "Statistics": {
         "DpuCount": 8
       }
     }
   }
   ```

**CloudWatch で DPU 使用をモニタリングする方法**
+ Athena は、キャパシティ使用率などのパフォーマンスデータのモニタリングに役立つクエリ関連メトリクスを CloudWatch に発行します。詳細については「[CloudWatch による Athena クエリメトリクスのモニタリング](query-metrics-viewing.md)」を参照してください。