我有 4000 PIOPS 的 db.r3.2xlarge。我从 EC2 实例中插入了 10 亿行。现在有大约 40GB 的可用内存。

目前,在 4000 PIOPS 中,READ PIOPS 需要 3000,而我只得到 1000 WRITE PIOPS。所以,这是一个低水平的写作。

我如何检查哪个正在使用 READ PIOPS?以及如何加快速度?

谢谢你。

编辑:
insert ignore into dna (hash, time, song_id) values (b%s, b%s, %s)
来自python的I'm using self.cursor.executemany(query, rows)hash + time + song_id 是一个复合主键。

我正在使用 AWS RDS InnoDB。

我有 4000 PIOPS。但是,它现在停留在 2000 总数。我有 60MB/s 的写入吞吐量。

最佳答案

如果散列是您的主键或已编入索引,则您不会按主要 my 和/或索引顺序插入。

此外,您正在使用 INSERT IGNORE ,这表明您正在尝试避免不可避免的重复键错误,因为在您插入的内容中存在重复数据。

由于这两个原因,InnoDB 必须做很多准备工作以将适当的页面从磁盘上的表空间加载到内存中,以在主索引和/或任何二级索引中找到下一行需要去的位置,如果该行是重复的,这可能会浪费精力,并且可能需要进行页面拆分,以便有可用空间将下一个散列随机插入到其适当的位置。

如果 hash 是主键,那么在插入时删除所有其他索引可能对您有利,然后在最后添加它们,这样可以更有效地构建它们。

如果批次足够大并且哈希确实是主键,则按哈希对插入进行预排序应该会有所帮助。

关于amazon-web-services - 为什么 AWS RDS MYSQL INSERT 需要读取 IOPS?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34768044/

10-11 07:04