同样的代码,在MySQL5.7上表现非常不错,到了8.0就慢得难以接受。原因是MySQL 8.0一些设置是默认开启的(5.7是默认关闭的),而这些设置有可能会严重影响数据库性能。
本题中,影响插入效率的因素是,8.0默认开启了 log-bin 功能,在确定用不到该功能的前提下,只要在配置中关闭即可。
在文件 my.ini 或 /etc/my.cnf 中,修改 mysqld 节点的内容,如下:
[mysqld]
skip-log-bin
# disable_log_bin # Linux下可使用这个
# transaction_write_set_extraction=OFF
其中 skip-log-bin 和 disable_log_bin 作用是一样的,如果一个无效,可以尝试另一个。
总结,通过该方法只能提升一部分速度:测试插入1万条,由原来的约4分钟缩减到4s。速度依然不理想,同比使用5.7测试时间不到400ms。相差近10倍。。。