我的应用程序在 docker 中运行,因此我可以确定它始终是相同版本的 MySQL、相同的数据库结构、相同的排序规则等等。我在几台机器上运行它。在所有这些上,我的基准脚本执行 20k 顺序插入需要合理的时间(例如 30 秒)。但在一台机器上大约需要 13m。CPU 核心和 RAM(8 核,16 GB)方面的硬件统计数据相似。关键机器的操作系统是 Debian Bullseye,就像其他机器一样(其他机器是各种 Debian 或 Ubuntu 变体)。为什么这个特定虚拟机的性能可能比其他虚拟机差很多?
这可能是由于
fsync
两台不同机器上的不同行为造成的。您可以尝试放宽数据持久性约束,看看慢速机器是否突然变快。如果是这样,您的问题与缓慢(同步写入)性能有关
fsync
。请注意,这将破坏 ACID 合规性,因此仅将这些设置用于测试,然后恢复为默认参数。不要在生产服务器上进行实验。
在速度较慢的机器上,尝试设置以下内容:
重新启动
mysql
并重新发出您的 INSERT。完成后,请记住删除这些选项以恢复完整的 ACID 并重新启动
mysql
。