MySQL问题解决记录(2):MySQL 8.0.11查询时长超长,Sending data占比99%
问题说明
两台服务器,生产环境MySQL 8.0.11,测试环境MySQL 8.0.34。
库结构、表内容完全一致,表数据量不超过10000。
SELECT
cc.cinvcode AS cInvCode,
cc.cinvname AS cInvName,
cc.cinvstd AS cInvStd,
qs.qualityindex_id AS qualityId,
pd.index_value AS qualityValue
FROM
craft_craft cc
LEFT JOIN craft_crafts ccs ON cc.id = ccs.craft_id
LEFT JOIN quality_schemes qs ON ccs.qualityscheme_id = qs.qualityscheme_id
LEFT JOIN pointer_default pd ON qs.qualityindex_id = pd.index_id AND cc.id = pd.craft_id
WHERE
ccs.code = '03'
ORDER BY
cc.cinvcode ASC,
qs.qualityindex_id ASC
测试环境输出1926条结果,耗时0.018s。
生产环境输出1926条结果,耗时3.26s。
生产环境的耗时统计:

Sending data占比99%
排查记录
- 首先检查了生产环境的配置文件,发现InnoDB缓冲池只配置了8MB,增加到8GB,重启后问题依旧。
- 检查了InnoDB buffer pool 命中率,99.9%,命中率很高,说明不是缓冲区问题。
- 检查了硬件资源,磁盘占用率很低,CPU占用率很低,内存剩余空间大于75%。
解决
- 黔驴技穷了,参数配置、重启服务都不管用,以防万一备份了数据库。
- 想安装一个8.0.34版本的,发现一台主机不能安装两个相同大版本的MySQL,只能升级。
- 冒险升级了生产环境的MySQL到8.0.34以后,重启数据库,问题解决了。
- 怀疑是MySQL版本的BUG。

浙公网安备 33010602011771号