

# DynamoDB 按需表的最大吞吐量
<a name="on-demand-capacity-mode-max-throughput"></a>

对于按需表，您可以选择指定单个表和关联全局二级索引（GSI）每秒的最大读取和/或写入吞吐量。指定最大按需吞吐量有助于限制表级用量和成本。默认情况下，最大吞吐量设置不适用，按需吞吐率受账户中所有表的 40000 个表级读写吞吐量 [AWS 服务配额](ServiceQuotas.md#default-limits-throughput)的限制。如果需要，您可以请求增加服务配额。

为按需表配置最大吞吐量时，超过指定最大吞吐量的吞吐量请求将受到节流。您可以根据应用程序要求，随时修改表级吞吐量设置。

在以下的一些常见使用案例中，对按需表使用最大吞吐量可以获得好处：
+ **吞吐量成本优化** – 对按需表使用最大吞吐量，可提供额外的一层成本可预测性和可管理性。此外，它还带来了更大的灵活性，能够通过使用按需模式来支持具有不同流量模式和预算的工作负载。
+ **防止过度使用** – 通过设置最大吞吐量，您可以防止对于按需表的读取或写入消耗量意外激增，这可能是由于未优化的代码或恶意进程造成的。这个表级设置可以防止组织在一定时间范围内消耗过多的资源。
+ **保护下游服务** - 客户应用程序可以包括无服务器和非无服务器技术。架构中的无服务器部分可以快速扩展来匹配需求。但具有固定容量的下游组件可能会不堪重负。为按需表实施最大吞吐量设置，可以防止大量事件传播到多个下游组件而产生意想不到的副作用。

您可以为新的和现有的单区域表、全局表和 GSI 配置按需模式的最大吞吐量。您还可以在表还原和从 Amazon S3 工作流程导入数据期间配置最大吞吐量。

您可以使用 [DynamoDB 控制台](https://console.aws.amazon.com/dynamodb/)、[AWS CLI](AccessingDynamoDB.md#Tools.CLI)、[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html) 或 [DynamoDB API](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/Welcome.html) 为按需表指定最大吞吐量设置。

**注意**  
按需表的最大吞吐量是在尽最大努力的基础上应用的，应被视为目标而不是保证的请求上限。由于[*容量爆增*](burst-adaptive-capacity.md#burst-capacity)，您的工作负载可能会暂时超过指定的最大吞吐量。在某些情况下，DynamoDB 使用*容量爆增*来容纳超出表的最大吞吐量设置的读取或写入。利用容量暴增，意外的读取或写入请求可在原本会受限制的环境中获得成功。

**Topics**
+ [

## 对按需模式使用最大吞吐量时的注意事项
](#consideration-use-max-throughput-ondemand)
+ [

## 请求节流和 CloudWatch 指标
](#max-throughput-ondemand-request-throttle)

## 对按需模式使用最大吞吐量时的注意事项
<a name="consideration-use-max-throughput-ondemand"></a>

在按需模式下对表使用最大吞吐量时，需要考虑以下注意事项：
+ 您可以为任何按需表或该表中的单个全局二级索引单独设置最大读写吞吐量，以便根据特定的要求来微调方法。
+ 您可以使用 Amazon CloudWatch 来监控和了解 DynamoDB 表级用量指标，并为按需模式确定适当的最大吞吐量设置。有关更多信息，请参阅 [DynamoDB 指标与维度](metrics-dimensions.md)。
+ 当您在一个全局表副本上指定最大读取和/或写入吞吐量设置时，相同的最大吞吐量设置将自动应用于所有副本表。全局表中的副本表和二级索引务必具有相同的写入吞吐量设置，以确保正确复制数据。有关更多信息，请参阅 [全局表的最佳实践](globaltables-bestpractices.md)。
+ 您可以指定的最大读取或写入吞吐量的最小值为每秒一个请求单位。
+ 您指定的最大吞吐量必须低于任何按需表或该表中单个全局二级索引可用的默认吞吐量配额。

## 请求节流和 CloudWatch 指标
<a name="max-throughput-ondemand-request-throttle"></a>

如果应用程序超过了您在按需表上设置的最大读取或写入吞吐量，DynamoDB 就会开始节流这些请求。当 DynamoDB 限制读取或写入时，它会将 `ThrottlingException` 返回给调用方。然后，您可以根据需要采取适当的措施。例如，您可以增加或禁用最大表吞吐量设置，或者等待一小段时间后再重试请求。

为了更易于监控为表或全局二级索引配置的最大吞吐量，CloudWatch 提供了以下指标：[OnDemandMaxReadRequestUnits](metrics-dimensions.md#OnDemandMaxReadRequestUnits) 和 [OnDemandMaxWriteRequestUnits](metrics-dimensions.md#OnDemandMaxWriteRequestUnits)。