对 Amazon DynamoDB 表的读取或写入操作受到限制,导致我的应用程序出错。但是,Amazon CloudWatch 指示占用的容量单位数尚未超过预配置容量单位。为什么会出现这种情况,我该怎样解决呢?

通常,当某个分区被下游应用程序访问的频率远高于其他分区(即“热点”分区)或者当工作负载依赖于短时间高利用率(读取或写入活动“突增”)时,将会发生限制。

为了避免热分区和限制,您必须优化表和分区结构。有关优化的更多信息和策略,请参阅 DynamoDB 的最佳实践

考虑以下一个或多个解决方案:

  • 增加表的读取或写入容量,为读取或写入操作的短期峰值或突增提前做好准备。如果您随后决定不需要额外容量,可以减少容量。
    注意:在确定增加多少读取或写入容量之前,请考虑设计分区键以均匀分发工作负载中的最佳实践。
  • 实施错误重试和指数退避此方法使用连续错误响应重试等待间隔逐渐延长的方式,帮助提高应用程序的可靠性。如果您使用的是 AWS 开发工具包,则此逻辑是内置的。如果您使用的是其他开发工具包,请考虑手动实施。
  • 在表内尽可能均匀地分布您的读取操作和写入操作 “热”分区可能会降低表的总体性能。
  • 实施缓存解决方案,如 DynamoDB 企业加速器 (DAX)Amazon ElastiCache DAX 是一项与 DynamoDB 兼容的缓存服务,可为您的应用程序提供极高的内存中性能。如果您的工作负载频繁访问静态数据,设计良好的缓存通常能够比数据库更快地提供查询结果。

适应性容量在 5-30 分钟内激活,有助于缓解短期工作负载不平衡的问题。但是,每个分区仍将受到 1000 个写入容量单位和 3000 个读取容量单位的硬性限制,因此,适应性容量无法解决您的表或分区设计中的增大问题。


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2016 年 8 月 17 日

更新时间:2018 年 12 月 18 日