使用Amazon Aurora时多个小SQL查询是否会产生更高IOPs及更多成本?
问题1:定价说明中提到的「data pages」具体是什么
这里的data pages就是数据页,是数据库内核定义的、和底层存储交互的最小读写单元,和物理磁盘的默认扇区单元没有直接绑定。
结合给出的Aurora计费规则可以明确:
就I/O费用计算而言,假设同一数据库每秒从存储读取100个data pages以满足其上运行的查询需求,这将产生每月2.628亿次读I/O(100页/秒 × 730小时 × 60分钟 × 60秒)。
同理,假设您的应用对数据库做出的变更平均每秒影响10个data pages。Aurora对每个data page上最高4KB的变更收取1次I/O操作费用。如果每个页面变更的数据量小于4KB,则会产生每秒10次写I/O。
简单来说,不管单次读操作只需要某一页里的1个字节还是整页数据,只要需要从存储拉取这个页,就算1次读I/O;写操作同理,不管单页里变更的是1字节还是4KB以内的内容,都只算1次写I/O,单页变更超过4KB才会按4KB为单位拆分计数。
问题2:多个小型SQL查询相比单个大型SQL查询是否会产生更高的IOPS
没有绝对结论,取决于查询的实际数据访问模式:
- 若多个小型查询访问的是随机分布、互不连续的独立数据页,且未命中数据库内存缓冲池,会比单次批量读取连续数据页的大型查询产生高得多的IOPS。比如1000个单条查询分别取随机分布的1000条记录,每条记录在独立数据页上,就会产生1000次读I/O;而单个大型查询一次性批量拉取这1000条记录,如果这些记录在连续的10个数据页上,仅会产生10次读I/O。
- 若多个小型查询访问的都是已经在缓冲池中的热点数据,不需要触发磁盘I/O,不会产生额外IOPS,甚至比需要访问冷数据的单个大型查询I/O更低。
- 写场景逻辑一致:如果多个小更新每次修改不同的独立数据页,IOPS会高于批量修改连续页的单个大更新;如果多个小更新修改的是同一个数据页,数据库会合并写操作,仅产生1次写I/O,IOPS反而更低。
内容的提问来源于stack exchange,提问作者karthikeayan
相关产品推荐
相关产品推荐

