Azh*_*har 5 amazon-web-services amazon-dynamodb
我有一个具有默认容量的表,即5个RCU和5个WCU。根据文档,这将导致Dynamo DB仅创建一个分区。
表结构:
我有一些item_types具有一个或两个项目ID,另一些具有100,000。我们总共有大约一千万条记录。
我试图了解是否只有一个分区,这将如何产生热键问题?一般而言,什么是热键?
我知道这是一个旧答案,但我发现了一些有用的信息。
如分区和数据分布中所述:
在以下情况下,DynamoDB 会向表分配额外的分区:
- 如果您将表的预置吞吐量设置增加到超出现有分区可以支持的范围。
- 如果现有分区已满并且需要更多存储空间。
这意味着您无法假设您正在使用多少个分区。实际上,DynamoDB 的文档从未讨论过物理分区。相反,他们把注意力集中在partitionKey桌子上。
如果您在页面中挖掘更多内容,则会详细解释 dynamoDB 如何使用partionKey哈希逻辑/物理分区。
如何使用partitionKey避免热键?
如设计分区键以均匀分配工作负载中所述:
表主键的分区键部分确定存储表数据的逻辑分区。这反过来又会影响底层的物理分区。表的预配 I/O 容量在这些物理分区之间平均分配。因此,不均匀分配 I/O 请求的分区键设计可能会创建“热”分区,从而导致限制并低效使用预配的 I/O 容量。
这种过于简单化意味着通常您必须设计分区键才能最大化分区/记录因子。
这并不总是正确的:例如,您可以在同一个记录下拥有大量记录partitionKey,这些记录几乎从未被读取或更新,并且写入partitionKey很少。
在您的情况下:如果您希望对同一 item_type 进行大量读取/写入,那么最好对数据进行不同的建模。
更多有用的链接:
设计和使用分区键的最佳实践有效地
使用写分片来均匀分配工作负载
| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |