【mysql】优化慢sql

2022-06-06 14:54:56 浏览数 (1)

今天例行查看日志,发现有个sql在本地查询速度较快,在服务器环境下查询速度较慢,达到了6s之多。

说下优化思路,原本事先将子查询优化下,后来排查下,发现是mysql缓存问题。为以后排查问题涨了点知识。

  1. 优化sql语句
  2. 优化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
22

二、优化mysql配置

执行如下语句,查询InnoDB缓冲池大小

代码语言:javascript复制
show variables like 'innodb_buffer_pool%';
11

在线调整InnoDB缓冲池大小

代码语言:javascript复制
SET GLOBAL innodb_buffer_pool_size = 3221225472

sql查询效率显著提高

如果想永久修改,需要修改下mysql的配置文件,我这里就暂时不改了。

三、永久修改

安装包安装的mysql默认配置文件在哪个路径呢,找了半天才找到,默认在如下路径

Windows默认隐藏了,需要开启显示。

代码语言:javascript复制
C:ProgramDataMySQLMySQL Server 5.7my.ini

路径

11

修改my.ini

搜索 innodb_buffer_pool_size

注意:用记事本保存的话,要注意保存的文件的编码。必须是ANSI

22

修改后,重启mysql即可。

参考文章

https://blog.csdn.net/chenlong316048157/article/details/124676394

腾云先锋(TDP,Tencent Cloud Developer Pioneer)是腾讯云GTS官方组建并运营的技术开发者群体。这里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹。来加入属于我们开发者的社群吧!

0 人点赞