

# DynamoDB 按需容量模式
<a name="on-demand-capacity-mode"></a>

Amazon DynamoDB 按需可提供真正的无服务器数据库体验，可以自动扩展以适应要求极为苛刻的工作负载，而无需进行容量规划。按需可简化设置过程，消除容量管理和监控，并提供快速、自动的扩展。使用按请求付费的定价，您不必担心闲置的容量，因为您只需为您实际使用的吞吐量付费。将按读取或写入请求向您收费，因此您的费用直接反映了您的实际使用量。

在选择按需模式时，DynamoDB 会随着工作负载的增加或减少，根据之前达到的任意流量水平即时调节工作负载。如果工作负载的流量级别达到新的峰值，DynamoDB 将自动扩展以适应增加的吞吐量需求。按需模式是默认和建议采用的吞吐量选项，因为它简化了构建现代无服务器应用程序的过程，这些应用程序可以从小规模起步，然后扩展到每秒数百万个请求。横向扩展按需表后，将来可以立即实现同样的吞吐量，而不会受到节流。如果您的表流量为零，那么在按需模式下，您无需为任何吞吐量付费。有关按需模式的扩展属性的更多信息，请参阅[初始吞吐量和扩展属性](#on-demand-capacity-mode-initial)。

使用按需模式的表可提供 DynamoDB 预置模式所提供的相同个位数毫秒级延迟、服务水平协议（SLA）和安全性。

**注意**  
默认情况下，DynamoDB 可防止您的用量出现意外、失控的状况。要扩展以超越账户中所有表的 40000 个表级读取和写入吞吐量限制，您可以申请提高此配额。超过默认表吞吐量配额的吞吐量请求将受到限制。有关更多信息，请参阅 [吞吐量默认限额](ServiceQuotas.md#default-limits-throughput)。

而且，您还可以选择为各个按需表和全局二级索引配置每秒最大读取和/或写入吞吐量。通过配置吞吐量，可以限制表级使用量和成本，防止消耗的资源意外激增，同时防止过度使用，从而实现可预测的成本管理。超过最大表吞吐量的吞吐量请求会受到节流。您可以根据应用程序的要求，随时修改表特定的最大吞吐量。有关更多信息，请参阅 [DynamoDB 按需表的最大吞吐量](on-demand-capacity-mode-max-throughput.md)。

要开始使用，请创建或更新表来使用按需模式。有关更多信息，请参阅 [针对 DynamoDB 表的基本操作](WorkingWithTables.Basics.md)。

在 24 小时滚动窗口内，表最多可以从预置容量模式切换到按需模式四次。您可以随时将表从按需模式切换到预置容量模式。

有关在读取和写入容量模式之间切换的更多信息，请参阅[在 DynamoDB 中切换容量模式时的注意事项](bp-switching-capacity-modes.md)。有关按需表配额，请参阅[读/写吞吐量](ServiceQuotas.md#default-limits-throughput-capacity-modes)。

**Topics**
+ [读取请求单位和写入请求单位](#read-write-request-units)
+ [初始吞吐量和扩展属性](#on-demand-capacity-mode-initial)
+ [DynamoDB 按需表的最大吞吐量](on-demand-capacity-mode-max-throughput.md)

## 读取请求单位和写入请求单位
<a name="read-write-request-units"></a>

DynamoDB 按照*读取请求单位*和*写入请求单位*，对应用程序在表上执行的读取和写入操作收费。

一个*读取请求单位*表示对大小最多为 4 KB 的项目每秒执行一次强一致性读取操作，或每秒执行两次最终一致性读取操作。有关 DynamoDB 读取一致性模型的更多信息，请参阅[DynamoDB 读取一致性](HowItWorks.ReadConsistency.md)。

一个*写入请求单位*表示对大小最多为 1 KB 的项目每秒执行一次写入操作。

有关如何使用读取和写入单位的更多信息，请参阅[DynamoDB 读取和写入操作](read-write-operations.md)。

## 初始吞吐量和扩展属性
<a name="on-demand-capacity-mode-initial"></a>

使用按需容量模式的 DynamoDB 表会自动适应应用程序的流量。新的按需表将能够保持多达每秒 4000 次写入和每秒 12000 次读取。按需容量模式会即时在表中承受之前双倍的峰值流量。例如，假设应用程序的流量模式在每秒 25000 到 50000 次强一致性读取之间变化，那么先前流量峰值就是每秒 50000 次读取。按需容量模式可即时容纳最高每秒 10 万次读取的持续流量。如果您的应用程序保持每秒 10 万次读取的流量，则该峰值将成为新的先前峰值。这个先前峰值使后续流量可高达每秒 20 万次读取。

如果工作负载在表上产生的流量是先前峰值的两倍以上，DynamoDB 会随着流量的增加自动分配更多容量。这种容量分配有助于确保您的工作负载不会受到节流。但是，如果您在 30 分钟内超出先前峰值的两倍，则可能发生限制。例如，假设应用程序的流量模式在每秒 25000 到 50000 次强一致性读取之间变化，那么先前流量峰值就是每秒 50000 次读取。我们建议您在每秒读取量超过 10 万次之前，先对表进行预热或将流量增长的间隔设置为至少 30 分钟。有关预热的更多信息，请参阅[了解 DynamoDB 热吞吐量](warm-throughput.md)。

如果您的工作负载的峰值流量保持在之前峰值的两倍以内，DynamoDB 将不会设置 30 分钟的节流限制。如果峰值流量超过之前峰值的两倍，请确保这种增长发生在您上次达到峰值后 30 分钟内。