

# Amazon DynamoDB 中的配额
<a name="ServiceQuotas"></a>

本节介绍 Amazon DynamoDB 中的当前配额（以前称为限制）。除非另行指定，否则每个限额将基于区域应用。

**注意**  
DynamoDB 中的所有大小测量值都使用基于二进制的单位。DynamoDB 指定 1 KB = 1024 字节、1 MB = 1024 KB、1 GB = 1024 MB、1 TB = 1024 GB。

**Topics**
+ [读/写吞吐量](#default-limits-throughput-capacity-modes)
+ [预留容量](#reserved-capacity)
+ [表](#limits-tables)
+ [全局表](#gt-limits-throughput)
+ [二级索引](#limits-secondary-indexes)
+ [投影二级索引属性](#projected-secondary-index-attributes)
+ [DynamoDB Streams](#limits-dynamodb-streams)
+ [从 Amazon S3 导入](#import-limits)
+ [将表导出到 Amazon S3](#limits-table-export)
+ [备份与还原](#limits-backup-restore)
+ [Contributor Insights](#contributor-insights-quotas)

## 读/写吞吐量
<a name="default-limits-throughput-capacity-modes"></a>

### 吞吐量默认限额
<a name="default-limits-throughput"></a>

AWS 对您的账户在区域中可以预置和使用的吞吐量设置了一些默认配额。

在账户级别应用账户级别的读取吞吐量和账户级别的写入吞吐量配额。这些账户级别的配额应用于给定区域中您账户的所有表和全局二级索引的预置吞吐容量之和。可以为单个表或跨多个表预置账户的所有可用吞吐量。这些配额仅应用于使用预置容量模式的表。

表级读取吞吐量和表级写入吞吐量配额会以不同的方式应用于使用预置容量模式的表和使用按需容量模式的表。

对于预置容量模式的表和 GSI，配额是可以为该区域中的任何表或任何其 GSI 预置的最大读取和写入容量单位。任何单个表及其所有 GSI 的总和也必须保持在账户级读写吞吐量配额以下。除此之外，还要求所有预置表及其 GSI 的总和必须保持在账户级读写吞吐量配额以下。

对于按需容量模式的表和 GSI，表级配额是任何表或该表中任何单个 GSI 可用的最大读取和写入容量单位。在按需模式中，不对表应用账户级读写吞吐量配额。

默认情况下，以下是适用于您账户的吞吐量配额。

**注意**  
所有容量单位和请求单位配额均以秒为单位计量。例如，40000 个读取容量单位的配额意味着每秒 40000 个读取。

**注意**  
可以通过增加服务配额，为 DynamoDB 表请求任意数量的读取容量单位（RCU）或写入容量单位（WCU）。下表中列出的值代表初始默认配额。这些不是表的最大限制。


| 吞吐量配额名称 | 按需 | 已预置 | 可调整 | 
| --- | --- | --- | --- | 
| 每个表 | 40000 个读取请求单位和 40000 个写入请求单位 | 40000 个读取容量单位和 40000 个写入容量单位 |  是  | 
| 每个 账户 | 不适用 | 80000 个读取容量单位和 80000 个写入容量单位 |  是  | 
| 任何表或全局二级索引的最低吞吐量 | 不适用 | 1 个读取容量单位和 1 个写入容量单位 |  是  | 

### 增加或减少吞吐量（对于预调配表）
<a name="decreasing-increasing-throughput"></a>

#### 增加预调配吞吐量
<a name="limits-increasing-provisioned-throughput"></a>

您可以根据需要使用 `ReadCapacityUnits` 或 `WriteCapacityUnits` 操作增加 AWS 管理控制台 或 `UpdateTable`。在单个调用中，您可以为表、该表的任何全局二级索引或它们的任意组合增加预调配吞吐量。新设置在 `UpdateTable` 操作完成后才会生效。

添加预置容量时不能超过每个账户的配额，且 DynamoDB 不会允许您太快地增加预置容量。除了这些限制以外，您还可以根据需要尽量增加表的预置容量。有关每个账户的配额的更多信息，请参阅上一部分 [吞吐量默认限额](#default-limits-throughput)。

#### 减少预调配吞吐量
<a name="limits-decreasing-provisioned-throughput"></a>

对于 `UpdateTable` 操作中的每个表和全局二级索引，您可以减小 `ReadCapacityUnits` 或 `WriteCapacityUnits`（或者同时减小这两者）。新设置在 `UpdateTable` 操作完成后才会生效。

对于您每天可以对 DynamoDB 表执行的预调配容量减少次数，已设定原定设置限额。天依据协调世界时 (UTC) 定义。在每天开始时，您有 4 次减少容量的机会。此后每小时会增加 1 次减少机会，但任何时候最多可拥有 4 次机会。在一天的完整 24 小时内，这使得您最多有 27 次减少的机会（第一个小时 4 次，加上剩余 23 小时每小时各 1 次）。

**重要**  
表与全局二级索引减小限制次数已分离，因此特定表的所有全局二级索引都具有其自己的减小限制。但是，如果一个请求减少了表和全局二级索引的吞吐量，则当表和全局二级索引中的任意一个超出当前限制时，请求都会被拒绝。请求未得到部分处理。

**Example**  
在一天的头 4 个小时内，具有全局二级索引的表可以按下面所示进行修改：  
+  将表的 `WriteCapacityUnits` 或 `ReadCapacityUnits`（或两者）减少 4 次。
+  将全局二级索引的 `WriteCapacityUnits` 或 `ReadCapacityUnits`（或两者）减少 4 次。
 在那一天结束时，表和全局二级索引的吞吐量各有机会减少 27 次。

## 预留容量
<a name="reserved-capacity"></a>

 AWS 为您的账户可以购买的活跃预留容量设置了原定设置限额。限额限制是写入容量单位（WCU）和读取容量单位（RCU）的预留容量组合。


| 预留容量配额 | 活跃预留容量 | 可调整 | 
| --- | --- | --- | 
|   每个 账户   |   1,000,000 个预调配容量单位（WCU \$1 RCU）   |   是   | 

 如果您尝试在单次购买中购买超过 1,000,000 个预调配容量单位，则会收到有关此服务限额限制的错误。如果您有活跃预留容量并尝试购买额外的预留容量，从而导致活跃的预调配容量单位超过 1,000,000 个，则会收到有关此服务限额限制的错误。

## 表
<a name="limits-tables"></a>

### 表大小
<a name="limits-table-size"></a>

表的大小没有实际限制。表的项目数和字节数是无限制的。

### 最大表数（每个账户、每个区域）
<a name="limits-tables-per-account"></a>

对于任何 AWS 账户，每个 AWS 区域都有一个 2,500 个表的初始配额。

如果一个账户需要超过 2500 个表，请联系您的 AWS 账户团队请求增加表，最多可增加到 10000 个表。如果需要超过 10000 个表，推荐的最佳做法是设置多个账户，每个账户最多可提供 10000 个表。

## 全局表
<a name="gt-limits-throughput"></a>

使用全局表时，以下默认配额适用。


| 默认全局表配额 | 按需 | 已预置 | 
| --- | --- | --- | 
| MRSC 全局表的数量（请参阅[一致性模式](V2globaltables_HowItWorks.md#V2globaltables_HowItWorks.consistency-modes)） | 在任何容量模式下，MRSC 全局表总数为 400 个 | 在任何容量模式下，MRSC 全局表总数为 400 个 | 
| 为多区域最终一致性（MREC）配置的每表吞吐量 | 40000 个读取请求单位和 40000 个写入请求单位 | 40000 个读取容量单位和 40000 个写入容量单位 | 
| 为多区域强一致性（MRSC）配置的每表吞吐量 | 40000 个读取请求单位和 40000 个写入请求单位 | 40000 个读取容量单位和 40000 个写入容量单位 | 
| 每个账户、每个区域、每天的新副本回填数据 | 10 TB | 10 TB | 

**注意**  
在某些情况下，您可能需要通过 AWS 支持 申请增加限额限制。如果以下任何一项适用于您，请参阅 [https://aws.amazon.com/support](https://aws.amazon.com/support)：  
要成功创建副本，全局表吞吐量配额必须等于或大于每表吞吐量配额。MREC 和 MRSC 全局表有单独的全局表吞吐量配额。
如果要在 24 小时内将副本添加到超过 10TB 的目标区域，则必须针对添加副本数据回填配额请求提高服务配额。
如果您遇到类似以下内容的错误消息：  
无法在区域“example\$1region\$1A”中创建表“example\$1table”的副本，因为它超过了您在区域“example\$1region\$1B”中的当前账户限制。

## 二级索引
<a name="limits-secondary-indexes"></a>

最多可以为每个表定义 5 个本地二级索引。

 每个表都有 20 个全局二级索引的原定设置限额。

## 投影二级索引属性
<a name="projected-secondary-index-attributes"></a>

最多可以为表的所有本地和全局二级索引组合投影 100 个属性。此配额只适用于用户指定的投影属性。

对于 `CreateTable` 操作，如果您指定 `INCLUDE` 的 `ProjectionType`，则在 `NonKeyAttributes` 中指定的属性总数量（跨所有二级索引的属性之和）不能超过 100。将同一属性名称投影到两个不同的索引中，将在配额中计为两个不同的属性。

此配额不适用于 `ProjectionType` 为 `KEYS_ONLY` 或 `ALL` 的二级索引。

## DynamoDB Streams
<a name="limits-dynamodb-streams"></a>

### DynamoDB Streams 中的分片同时读取器
<a name="limits-dynamodb-streams-simultaneous"></a>

对于作为非全局表的单区域表，您可以设计最多两个同时的进程来同时从同一个 DynamoDB Streams 分片读取数据。超过此限制会导致请求被拒。对于全局表，我们建议您将并行读取器的数量限制为一个，以避免请求节流。

### 启用了 DynamoDB Streams 的表的最大写入容量
<a name="limits-dynamodb-streams-max-write-capacity"></a>

AWS 为启用 DynamoDB Streams 的 DynamoDB 表的写入容量设置了一些默认配额。这些默认配额仅适用于处于预置读/写容量模式的表。
+ 每个表 - 40000 个写入容量单位

## 从 Amazon S3 导入
<a name="import-limits"></a>

在 us-east-1、us-west-2 和 eu-west-1 区域中，从 Amazon S3 导入 DynamoDB 可以支持多达 50 个并发导入作业，每次导入源对象的总大小为 15TB。在所有其他区域，最多支持 50 个总大小为 1TB 的并发导入任务。在所有区域中，每个导入任务最多可处理 50000 个 Amazon S3 对象。有关导入和验证的更多信息，请参阅[导入格式限额和验证](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/S3DataImport.Validation.html#S3DataImport.Validation.limits)。

## 将表导出到 Amazon S3
<a name="limits-table-export"></a>

完整导出：最多可以导出 300 个并发导出任务，或所有正在进行的表导出的总容量最多为 100TB。在对导出进行排队之前，将检查这两个限制。

增量导出：DynamoDB 向 Amazon S3 的增量导出可以支持多达 300 个并发导出任务，或者从所有正在进行的表导出时最多支持总共 100 TB。导出时段限制为最短 15 分钟，最长 24 小时。

## 备份与还原
<a name="limits-backup-restore"></a>

DynamoDB 通过 DynamoDB 按需备份或连续备份可支持多达 50 个并发还原，总计 50 TB。AWS Backup 支持多达 50 次并发还原，总计 25 TB。

## Contributor Insights
<a name="contributor-insights-quotas"></a>

如果您在 DynamoDB 表上启用 Customer Insights，则仍然受 Contributor Insights 规则的限制。有关更多信息，请参阅 [CloudWatch 服务配额](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html)。