云账单每个月都在涨,但你的查询量其实没变化多少。问题可能出在DynamoDB的默认配置上——它按峰值收费,而不是按实际使用。

这篇内容的核心就一句话:四个配置改动,能显著降低DynamoDB成本。没有架构重构,没有代码迁移,纯调参数。

打开网易新闻 查看精彩图片

第一个调整是读写容量模式。默认的按需模式(On-Demand)按请求付费,适合不可预测的工作负载。但如果你的流量有规律,切换到预置容量(Provisioned)并配合自动扩缩容,通常能省40%-60%。关键是用CloudWatch监控实际消耗,别按峰值买容量。

打开网易新闻 查看精彩图片

第二个是全局表(Global Tables)的取舍。多区域复制确实方便,但每多一个区域,写入成本就翻倍。很多团队把全局表当灾备用,实际上单区域加跨区域备份更便宜。除非你的用户真的分布在多个大洲,否则先别开这个功能。

第三个是DAX缓存层的引入。DynamoDB Accelerator能把微秒级延迟降到个位数,同时减少70%以上的读取请求。但DAX本身不便宜,适合读多写少、且对延迟敏感的场景。如果缓存命中率低于90%,这笔账算不过来。

打开网易新闻 查看精彩图片

第四个最容易被忽略:投影属性(Projection)和分页查询。Select * 在DynamoDB里是真金白银——按返回数据量计费。把ProjectionExpression限定到必需字段,用LastEvaluatedKey做分页而不是全表扫描,这两项改动能让某些查询成本下降一个数量级。

最后提一个反直觉的点:DynamoDB的"免费"功能往往最贵。Streams、TTL、事务、条件写入,这些特性在开发阶段顺手就用上了,生产环境才发现吞吐量被它们吃掉大半。定期用Cost Explorer按操作类型拆账,比任何优化技巧都管用。