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。
生产环境的耗时统计:
image
Sending data占比99%

排查记录

  1. 首先检查了生产环境的配置文件,发现InnoDB缓冲池只配置了8MB,增加到8GB,重启后问题依旧。
  2. 检查了InnoDB buffer pool 命中率,99.9%,命中率很高,说明不是缓冲区问题。
  3. 检查了硬件资源,磁盘占用率很低,CPU占用率很低,内存剩余空间大于75%。

解决

  1. 黔驴技穷了,参数配置、重启服务都不管用,以防万一备份了数据库。
  2. 想安装一个8.0.34版本的,发现一台主机不能安装两个相同大版本的MySQL,只能升级。
  3. 冒险升级了生产环境的MySQL到8.0.34以后,重启数据库,问题解决了。
  4. 怀疑是MySQL版本的BUG。
posted @ 2025-04-09 13:49  苍凉温暖  阅读(26)  评论(0)    收藏  举报