今天例行查看日志,发现有个sql在本地查询速度较快,在服务器环境下查询速度较慢,达到了6s之多。
说下优化思路,原本事先将子查询优化下,后来排查下,发现是mysql缓存问题。为以后排查问题涨了点知识。
- 优化sql语句
- 优化mysql配置、
一、sql优化
优化前
代码语言:javascript复制SELECT
space_id,
max_temp,
min_temp,
avg_temp,
create_time
FROM
( SELECT space_id, max_temp, min_temp, avg_temp, create_time FROM t_data_history ORDER BY create_time DESC LIMIT 99999 ) a
GROUP BY
a.space_id
优化后
代码语言:javascript复制SELECT
a.*,
b.max_temp,
b.min_temp,
b.avg_temp,
b.x,
b.y,
b.z,
b.circle_point,
b.temperature
FROM
( SELECT max( create_time ) AS create_time, space_id FROM t_data_history a GROUP BY space_id ) a
LEFT JOIN t_data_history b ON a.space_id = b.space_id
AND a.create_time = b.create_time
二、优化mysql配置
执行如下语句,查询InnoDB缓冲池大小
代码语言:javascript复制show variables like 'innodb_buffer_pool%';
在线调整InnoDB缓冲池大小
代码语言:javascript复制SET GLOBAL innodb_buffer_pool_size = 3221225472
sql查询效率显著提高
如果想永久修改,需要修改下mysql的配置文件,我这里就暂时不改了。
三、永久修改
安装包安装的mysql默认配置文件在哪个路径呢,找了半天才找到,默认在如下路径
Windows默认隐藏了,需要开启显示。
代码语言:javascript复制C:ProgramDataMySQLMySQL Server 5.7my.ini
路径
修改my.ini
搜索 innodb_buffer_pool_size
注意:用记事本保存的话,要注意保存的文件的编码。必须是ANSI
修改后,重启mysql即可。
参考文章
https://blog.csdn.net/chenlong316048157/article/details/124676394
腾云先锋(TDP,Tencent Cloud Developer Pioneer)是腾讯云GTS官方组建并运营的技术开发者群体。这里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹。来加入属于我们开发者的社群吧!