gpt4 book ai didi

mysql - 减少 MySQL 中非关键数据的写入 I/O?

转载 作者:行者123 更新时间:2023-11-29 07:09:10 26 4
gpt4 key购买 nike

我有一个包含大约 200 万行的 MySQL 表,以及一个每秒更新大约 100 行的脚本。我想减少正在进行的磁盘写入 I/O 的数量。对于这个特定的表,ACID 并不重要,因为如果我在崩溃中丢失一些行,脚本只会在适当的位置恢复。即使我失去了过去一个小时的工作,也没什么大不了的。

该表使用的是 InnoDB,但我切换到 MyISAM,因为我想如果它不记录每次写入,可以将 I/O 减少一半。

但即使使用 MyISAM,也有很多写 I/O 正在进行。表 + 索引占用大约 1300 MB 的磁盘空间,但 MySQL 每小时向磁盘写入大约 1600 MB。我计算过,如果每一行都可以非常有效地写入磁盘,那么每小时大约写入 160 MB。所以它写入的数据量大约是它需要的数据量的 10 倍。我意识到效率低下,但我猜测大部分写入是因为它会将整个页面写入磁盘。

有什么方法可以减少它的写入频率,所以它会一直等到每页上的更多行被更新,这样它才能更有效地进行写入(即使在发生崩溃时会丢失更多数据)?

最佳答案

如果您使用的是 innodb,则可以将 innodb_flush_log_at_trx_commit 设置为 2,例如。这极大地改善了我们系统更新期间的 I/O。

这里有一些关于设置的说明: http://www.mysqlperformanceblog.com/?s=innodb_flush_log_at_trx_commit

关于mysql - 减少 MySQL 中非关键数据的写入 I/O?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5598111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com