更新:这个问题的范围不包括基本的性能调整,并认为这些已经完成。因此,如果您乐于分享一些明显的变量,例如innodb_io_capacity
,innodb_flush_log_at_trx_commit
甚至设置innodb_flush_method
为O_DIRECT
您最近发现的美妙旋钮,情况并非如此。
最近,我将一台生产服务器从 MySQL 5.7 移到了 8.0。紧接着我注意到 update 语句有时(并不总是)花费更多时间(大量)并且在这些期间倾向于堆叠。
Mysql 配置相同,硬件相似(相同的 CPU,相同数量的 RAM 及其类型,相同的磁盘型号(仅增加了大小)),因此唯一改变的两件事是 FreeBSD 版本(11.x -> 12.x) 和 MySQL 版本 (5.7.x -> 8.0)。我真的怀疑这与 FreeBSD 12 有什么关系,所以我认为这是 MySQL 8.0 的细节。
看看服务器性能,我可以说有足够的 CPU 可用(至少 30% 或更多),磁盘 i/o 饱和度最高为 50%。所以问题是 - 8.0 中有什么东西会在某些时候停止更新?
这是更新声明及其简介:
UPDATE mp_user SET ts_update = NOW(), latitude = '42.962993621826',
longitude = '47.550437927246', accuracy = '515.91363525391',
source = 'lbs', batteryLevel = '81', steps = '0', turnovers = '0',
setCoordsTime …
Run Code Online (Sandbox Code Playgroud)