

# 确定容量要求
<a name="capacity-management-requirements"></a>

在创建容量预留之前，您可以估算所需的容量，以向其分配正确的 DPU 数。在使用预留后，您可能需要检查预留的容量是不足还是过剩。本主题介绍了可用于进行这些估算的方法，同时介绍了一些用于评估使用量和成本的 AWS 工具。

**Topics**
+ [估算所需容量](#capacity-management-requirements-estimating)
+ [表明需要更多容量的迹象](#capacity-management-requirements-insufficient-capacity)
+ [检查是否存在空闲容量](#capacity-management-requirements-idle-capacity)
+ [监控 DPU 消耗](#capacity-management-requirements-monitoring-dpu-consumption)

## 估算所需容量
<a name="capacity-management-requirements-estimating"></a>

在估算容量需求时，建议考虑两个方面：特定查询可能需要的容量数量以及大体上可能需要的容量数量。

### 估算每个查询的容量需求
<a name="capacity-management-requirements-estimating-query"></a>

要确定查询可能需要的 DPU 数，可遵循以下准则：
+ DDL 查询消耗 4 个 DPU。
+ DML 查询会消耗 4 到 124 个 DPU。

Athena 会在提交查询时确定 DML 查询所需的 DPU 数。该数量取决于数据大小、存储格式、查询构造和其他因素。通常，Athena 会尝试选择最低且最高效的 DPU 数。如果 Athena 确定查询需要更高的计算能力才能成功完成，则它会增加分配给查询的 DPU 数。

### 估算特定于工作负载的容量需求
<a name="capacity-management-requirements-estimating-workload"></a>

要确定同时运行多个查询可能需要的容量数量，请遵循下表中的常规准则：


****  

| 并发查询 | 所需 DPU 数量 | 
| --- | --- | 
| 10 | 大于等于 40 | 
| 20 | 大于等于 96 | 
| 大于等于 30 | 大于等于 240 | 

请注意，所需的实际 DPU 数量取决于您的目标和分析模式。例如，如果您希望查询立即开始而不排队，确定您的并发查询需求峰值，然后相应地预置 DPU 数量。

您可以配置低于峰值需求的 DPU 数，但是在出现需求峰值时，可能会导致排队。出现排队时，Athena 会将您的查询搁置在队列中，并在容量可用时运行这些查询。

如果您的目标是在固定预算内运行查询，则可以使用 [AWS 定价计算器](https://calculator.aws/#/addService/Athena)来确定适合自己预算的 DPU 数。

最后，请记住，数据大小、存储格式和查询写入方式都会影响查询所需的 DPU 数量。要提高查询性能，可对数据进行压缩或分区，或者将其转换为列格式。有关更多信息，请参阅 [优化 Athena 性能](performance-tuning.md)。

## 表明需要更多容量的迹象
<a name="capacity-management-requirements-insufficient-capacity"></a>

容量不足错误消息和查询排队均表明您分配的容量不足。

如果您的查询失败并显示容量不足错误消息，则容量预留的 DPU 数过低，无法满足查询工作。例如，如果您的预留包含 24 个 DPU，并且运行的查询需要超过 24 个 DPU，则查询将失败。要监控此查询错误，可以使用 Athena 的 [EventBridge 事件](athena-events.md)。尝试添加更多 DPU，并重新运行查询。

如果许多查询在排队，这意味着您的容量已被其他查询完全占据。要减少排队时间，请执行以下操作之一：
+ 向预留添加 DPU 以提高查询并发性。
+ 从预留中移除工作组，以释放容量供其他查询使用。

要检查查询排队是否过多，使用容量预留中工作组的 Athena 查询队列时间 [CloudWatch 指标](query-metrics-viewing.md)。如果该值高于您的首选阈值，则可以将 DPU 添加至容量预留。

## 检查是否存在空闲容量
<a name="capacity-management-requirements-idle-capacity"></a>

要检查是否存在空闲容量，您可以减少预留中的 DPU 数或增加其工作负载，然后观察结果。

**检查是否存在空闲容量**

1. 请执行以下操作之一：
   + 减少预留中的 DPU 数（减少可用资源）
   + 向预留添加工作组（增加工作负载）

1. 使用 [CloudWatch](query-metrics-viewing.md) 测量查询队列时间。

1. 如果队列时间超过所需水平，执行以下任一操作
   + 移除工作组
   + 将 DPU 添加至容量预留

1. 在每次更改后，都要检查性能和查询队列时间。

1. 继续调整工作负载和/或 DPU 数以达到所需的平衡。

如果不希望在首选时间段范围之外保持容量，则可以[取消](capacity-management-cancelling-a-capacity-reservation.md)预留并稍后创建另一个预留。但是，即使您最近取消了另一个预留的容量，也无法保证会请求新的容量，并且创建新的预留需要花费一些时间。

## 监控 DPU 消耗
<a name="capacity-management-requirements-monitoring-dpu-consumption"></a>

查询运行后，您可以查看查询消耗的 DPU，以帮助优化容量估算。Athena 通过控制台、API 操作和 CloudWatch 提供 DPU 消耗指标。此信息可帮助您识别消耗资源超出或低于预期的查询，并根据实际数据优化容量分配。有关查看和跟踪 DPU 消耗的详细信息，请参阅[监控 DPU 使用情况](capacity-management-control-capacity-usage.md#capacity-management-monitor-dpu-usage)。

## 用于评估容量需求和成本的工具
<a name="capacity-management-requirements-tools"></a>

您可以使用 AWS 中的以下服务和功能测量 Athena 的使用情况和成本。

### CloudWatch 指标
<a name="capacity-management-requirements-tools-cloudwatch-metrics"></a>

您可以将 Athena 配置为在工作组级别下向 Amazon CloudWatch 发布查询相关指标。为工作组启用指标后，工作组查询的指标将在 Athena 控制台的工作组详细信息页面中显示。

有关发布到 CloudWatch 的 Athena 指标及其维度的信息，请参阅 [使用 CloudWatch 监控 Athena 查询指标](query-metrics-viewing.md)。

### CloudWatch 使用情况指标
<a name="capacity-management-requirements-tools-cloudwatch-usage-metrics"></a>

您可以使用 CloudWatch 用量指标在 CloudWatch 图表和控制面板上显示当前服务使用情况，以展示您的账户对资源的使用情况。对于 Athena，用量可用性指标对应于 AWS [服务限额](service-limits.md)。您可以配置警报，以在用量接近服务配额时向您发出警报。

有关更多信息，请参阅 [使用 CloudWatch 监控 Athena 使用情况指标](monitoring-athena-usage-metrics.md)。

### Amazon EventBridge 事件
<a name="capacity-management-requirements-tools-eventbridge-events"></a>

您可以将 Amazon Athena 与 Amazon EventBridge 结合使用来接收有关查询状态的实时通知。当已提交查询的状态发生变化时，Athena 将向 EventBridge 发布一个包含有关查询状态转换的信息的事件。您可以针对感兴趣的事件编写简单规则，并在事件匹配规则时执行自动化操作。

有关详细信息，请参阅以下资源：
+ [使用 EventBridge 监控 Athena 查询事件](athena-events.md)
+ [什么是 Amazon EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)
+ [Amazon EventBridge 事件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html) 

### 标签
<a name="capacity-management-requirements-tools-tags"></a>

在 Athena 中，容量预留支持标签。每个标签均包含一个键和一个值。要在 Athena 中跟踪成本，您可以使用 AWS 生成的成本分配标签。AWS 使用成本分配标签对[成本和使用率报告](https://docs.aws.amazon.com/cur/latest/userguide/what-is-cur.html)上的资源成本进行组织。这样您可以更轻松地对 AWS 成本进行分类和跟踪。要激活 Athena 的成本分配标签，您可以使用 [AWS 账单与成本管理 控制台](https://console.aws.amazon.com/billing/)。

有关详细信息，请参阅以下资源：
+ [标记 Athena 资源](tags.md)
+ [激活 AWS 生成的成本分配标签](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/activate-built-in-tags.html)
+ [使用 AWS 成本分配标签](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)