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

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

为避免热点分区和限制,您必须遵循 DynamoDB 最佳实践中的最佳实践策略来优化您的表和分区结构。

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

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

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


此页面对您有帮助吗? |

返回 AWS Support 知识中心

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

发布时间:2016 年 8 月 17 日

更新时间:2018 年 5 月 29 日