

# 控制容量使用
<a name="capacity-management-control-capacity-usage"></a>

您可以通过设置最大或最小 DPU 控制来控制 Athena 分配给查询的 DPU 数量。您可以在工作组级别对其进行配置以建立所有查询的基准控制，也可以在单个查询级别进行精细控制。这使您可以直接控制查询性能、工作负载并发性和成本。
+ 设置最大 DPU 数时，查询不会消耗超出您指定的容量。这使得控制成本和工作负载并发性变得简单。例如，如果您的容量预留有 200 个 DPU，则将每次查询的最大 DPU 数设置为 8 可允许您同时运行 25 个查询。如果您将预留增加到 400 个 DPU，则可以同时运行 50 个查询。
+ 设置最小 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. 在导航窗格中，选择 **Workgroups**（工作组）。

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 控制**
+ 将 `start-query-execution` 命令与 `engine-configuration` 参数一起使用：

  ```
  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)。