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