mysql aurora 高 innodb_buffer_pool_reads 在写入繁重的数据库实例上

发布时间:2021-03-04 16:58

我的 aurora 集群有一个奇怪的问题。 该集群有两个实例,具有 4 个内核和 32GB 规格、写入器和读取器实例。

目前它以 0.5KB 的行大小将大约 2000 INSERT/秒推到一个大约 100GB 大小的表中,并具有 100GB 二级索引,PK 是 bigint 自动增量。 当前行数约为 10 亿+

随着表大小的增长,我注意到有大量的 innodb 缓冲池 IO,我不明白为什么会发生这种情况? 我知道由于表索引大小,它无法将所有内容都放入内存中,但仍然有大量的磁盘 IO 命中,从逻辑上讲这是不可能的?

当我所做的只是插入该表时,是否有任何理由“读取”到缓冲池内存/磁盘中?

所以我确实执行了表交换(将大表重命名为 _old 然后重新创建表),问题消失了,但几天后它又回来了。

此外,目前使用 golang 进行插入,但由于某种原因,它总是附加此“START TRANSACTION”和“COMMIT”语句,即使它只是一个插入语句,但不确定这是否会影响任何内容

回答1