Read/Write Capacity Mode - Amazon DynamoDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Read/Write Capacity Mode

Amazon DynamoDB 具有两个读/写容量模式来处理表的读写:

  • On-demand

  • Provisioned (default, free-tier eligible)

读/写容量模式控制对读写吞吐量收费的方式以及管理容量的方式。您可以在创建表时设置读/写容量模式,也可以稍后更改。

本地辅助索引从基本表继承读/写容量模式。有关更多信息,请参阅 更改读/写容量模式时的注意事项。)

On-Demand Mode

按需 Amazon DynamoDB 是一个灵活的结算选项,可以每秒处理数千个请求而不需要进行容量规划。按需 DynamoDB 针对读写请求提供按需支付定价,以便您只需为您使用的资源付费。

在选择按需模式时,DynamoDB 会随着工作负载的增加或减少,根据之前达到的任意流量水平即时调节工作负载。如果某个工作负载的流量级别达到一个新的峰值,DynamoDB 将快速调整以适应该工作负载。使用按需模式的表可提供 DynamoDB 已经提供的相同个位数毫秒级延迟、服务等级协议 (SLA) 承诺和安全性。您可以同时对新表和现有表选择按需模式,并可以继续使用现有的 DynamoDB API 而不更改代码。

如果满足以下任意条件,则按需模式是很好的选项:

  • You create new tables with unknown workloads.

  • You have unpredictable application traffic.

  • You prefer the ease of paying for only what you use.

请求速率仅受 DynamoDB 吞吐量默认表配额限制,但可以根据请求提升。有关更多信息,请参阅 吞吐量默认配额。)

要开始使用按需,您可以创建或更新表以使用按需模式。有关更多信息,请参阅 针对 DynamoDB 表的基本操作。)

您可以每 24 小时在读/写容量模式之间切换一次。有关您在切换读/写容量模式时应考虑的问题,请参阅更改读/写容量模式时的注意事项

注意

DynamoDB 导入/导出工具目前不支持按需模式。

Read Request Units and Write Request Units

对于按需模式表,您无需指定预期应用程序执行的读取和写入吞吐量。DynamoDB 会按照读取请求单位和写入请求单位对应用程序在表上执行的读取和写入操作收费。

  • One read request unit represents one strongly consistent read request, or two eventually consistent read requests, for an item up to 4 KB in size. Two read request units represent one transactional read for items up to 4 KB. If you need to read an item that is larger than 4 KB, DynamoDB needs additional read request units. The total number of read request units required depends on the item size, and whether you want an eventually consistent or strongly consistent read. For example, if your item size is 8 KB, you require 2 read request units to sustain one strongly consistent read, 1 read request unit if you choose eventually consistent reads, or 4 read request units for a transactional read request.

    注意

    To learn more about DynamoDB read consistency models, see Read Consistency.

  • One write request unit represents one write for an item up to 1 KB in size. If you need to write an item that is larger than 1 KB, DynamoDB needs to consume additional write request units. Transactional write requests require 2 write request units to perform one write for items up to 1 KB. The total number of write request units required depends on the item size. For example, if your item size is 2 KB, you require 2 write request units to sustain one write request or 4 write request units for a transactional write request.

有关按需 DynamoDB 可用的 AWS 区域的列表,请参阅 Amazon DynamoDB 定价

Peak Traffic and Scaling Properties

使用按需容量模式的 DynamoDB 表会自动适应应用程序的流量。按需容量模式会即时在表中承受之前双倍的峰值流量。例如,如果应用程序的流量模式在每秒 25,000 次到 50,000 次强一致性读取之间变化,其中每秒 50,000 次读取是先前的峰值流量,则按需容量模式会即时持续承受每秒高达 100,000 次读取的流量。如果应用程序承受每秒 100,000 次读取的流量,则该峰值将成为新的之前峰值,从而使后续流量高达每秒 200,000 次读取。

如果您对于表需要的峰值高于之前峰值的两倍,DynamoDB 会自动分配更多容量作为流量增量,以帮助确保您的工作负载不遇到限制。但是,如果您在 30 分钟内超出先前峰值的两倍,则可能发生限制。例如,如果应用程序的流量模式在每秒 25,000 次到 50,000 次强一致性读取之间变化,其中每秒 50,000 次读取是先前达到的峰值流量,则 DynamoDB 会建议让流量增长的间隔超过至少 30 分钟,然后才会超过每秒 100,000 次读取。

Initial Throughput for On-Demand Capacity Mode

如果您最近首次将现有表切换为按需容量模式,或者,如果您在启用按需容量模式的情况下创建了新表,则该表将具有以下之前峰值设置,即使该表之前尚未使用按需容量模式提供流量也是如此。

  • Newly created table with on-demand capacity mode: The previous peak is 2,000 write request units or 6,000 read request units. You can drive up to double the previous peak immediately, which enables newly created on-demand tables to serve up to 4,000 write request units or 12,000 read request units, or any linear combination of the two.

  • Existing table switched to on-demand capacity mode: The previous peak is half the maximum write capacity units and read capacity units provisioned since the table was created, or the settings for a newly created table with on-demand capacity mode, whichever is higher. In other words, your table will deliver at least as much throughput as it did prior to switching to on-demand capacity mode.

Table Behavior while Switching Read/Write Capacity Mode

当您将表从预置的容量模式切换到按需容量模式时,DynamoDB 会对表和分区的结构进行若干更改。此过程可能耗时数分钟。在切换期间,您的表将提供与先前预置的写入容量单位和读取容量单位数量相一致的吞吐量。当从按需容量模式切换回预置的容量模式时,表将提供与表设置为按需容量模式时达到的先前峰值一致的吞吐量。

Provisioned Mode

如果您选择预置模式,则指定您的应用程序需要的每秒读取和写入次数。您可以使用 Auto Scaling 根据流量变化自动调整表的预置容量。这可帮助您控制您对 DynamoDB 的使用,使之保持或低于定义的请求速率,以便获得成本可预测性。

如果满足以下任意条件,则预置模式是很好的选项:

  • You have predictable application traffic.

  • You run applications whose traffic is consistent or ramps gradually.

  • You can forecast capacity requirements to control costs.

Read Capacity Units and Write Capacity Units

对于预置模式表,您可以按读取容量单位 (RCU) 和写入容量单位 (WCU) 指定吞吐量容量:

  • One read capacity unit represents one strongly consistent read per second, or two eventually consistent reads per second, for an item up to 4 KB in size. Transactional read requests require two read capacity units to perform one read per second for items up to 4 KB. If you need to read an item that is larger than 4 KB, DynamoDB must consume additional read capacity units. The total number of read capacity units required depends on the item size, and whether you want an eventually consistent or strongly consistent read. For example, if your item size is 8 KB, you require 2 read capacity units to sustain one strongly consistent read per second, 1 read capacity unit if you choose eventually consistent reads, or 4 read capacity units for a transactional read request. For more information, see 读取的容量单位消耗.

    注意

    To learn more about DynamoDB read consistency models, see Read Consistency.

  • One write capacity unit represents one write per second for an item up to 1 KB in size. If you need to write an item that is larger than 1 KB, DynamoDB must consume additional write capacity units. Transactional write requests require 2 write capacity units to perform one write per second for items up to 1 KB. The total number of write capacity units required depends on the item size. For example, if your item size is 2 KB, you require 2 write capacity units to sustain one write request per second or 4 write capacity units for a transactional write request. For more information, see 写入的容量单位消耗.

重要

当对按需表调用 DescribeTable 时,读取容量单位和写入容量单位设置为 0。

如果您的应用程序读取或写入较大型的项目(最大为 DynamoDB 的项目大小上限 400 KB),它将消耗更多的容量单位。

例如,假设您创建一个具有 6 个读取容量单位和 6 个写入容量单位的预置表。使用这些设置,您的应用程序可以执行以下操作:

  • Perform strongly consistent reads of up to 24 KB per second (4 KB × 6 read capacity units).

  • Perform eventually consistent reads of up to 48 KB per second (twice as much read throughput).

  • Perform transactional read requests of up to 12 KB per second.

  • Write up to 6 KB per second (1 KB × 6 write capacity units).

  • Perform transactional write requests of up to 3 KB per second.

有关更多信息,请参阅 管理 DynamoDB 预置容量表的设置。)

Provisioned throughput 是应用程序可以从表或索引消耗的最大容量。如果您的应用程序超出了表或索引的预置吞吐容量,则会发生请求限制。

限制会阻止您的应用程序消耗太多容量单位。当请求被丢失时,它会失败HTTP400代码(Bad Request)和 ProvisionedThroughputExceededException。AWSSDK具有重试节目请求的内置支持(请参阅 错误重试和指数退避),因此您不需要自己写下此逻辑。

您可以使用 AWS 管理控制台 监视预置和实际吞吐量,并在必要时修改吞吐量设置。

DynamoDB Auto Scaling

DynamoDB Auto Scaling 主动管理表和全局二级索引的吞吐容量。使用 Auto Scaling,您可以为读取和写入容量单位定义一个范围 (上限和下限)。您还可以在该范围内定义目标利用率百分比。即使在应用程序工作负载增加或减少的情况下,DynamoDB Auto Scaling 也会努力维持目标利用率。

利用 DynamoDB Auto Scaling,表或全局二级索引可以增加其预置读写容量,以处理突增流量,而不限制请求。当工作负载减少时,DynamoDB Auto Scaling 可以减少吞吐量,这样您就无需为未使用的预置容量付费。

注意

如果您使用 AWS 管理控制台创建表或全局二级索引,默认情况下将启用 DynamoDB Auto Scaling。

您可以随时使用控制台、AWS CLI 或其中一个 AWS 开发工具包管理 Auto Scaling 设置。

有关更多信息,请参阅 使用 DynamoDB Auto Scaling 自动管理吞吐容量。)

Reserved Capacity

作为 DynamoDB 客户,您可以购买 reserved capacity 提前,如所述 Amazon DynamoDB 定价. 通过预留容量,您可以支付一次性预付费用并承诺在一段时间内支付最低预置用量级别的费用。您的预留容量按小时预留容量费率计费。与按需的预配置吞吐量设置相比,通过提前预留读取和写入容量单位,您可以节省大量成本。对于您预置的超出预留容量的任何容量,将按照标准的预置容量费率收费。

注意

在按需模式下,预留容量不可用。

要管理预留容量,请转到 DynamoDB 控制台并选择预留容量

注意

您可以阻止用户查看或购买预留容量,同时仍允许他们访问控制台的其余部分。有关更多信息,请参阅Amazon DynamoDB 中的 Identity and Access Management中的“授予权限以阻止购买预留容量服务”。