mysql的一次优化,同版本mysql服务器上的运行速度比本地慢很多
文章目录
- mysql运行速度本地比服务器快
- 场景描述:
- 查找原因
- 修改方案
mysql运行速度本地比服务器快
场景描述:
都是mysql5.5,本地是机械盘,服务器是固态盘,执行同样的查询代码,本地是6秒,服务器是12秒。这就不对了,理论上服务器配置比我的电脑高很多,怎么会比我的慢一倍。我查询的数据量比较大,慢是可以理解的,但是服务器比本地的慢就不能理解。
查找原因
首先,经过慢查询和缓冲池查看,两者都没区别。下面是查看缓冲池代码:
show variables like 'innodb_buffer_pool%'
最后查看数据库缓存配置,发现服务器mysql开启缓存,但是可使用缓存容量为0,下图中原先为0,这是修改后的
修改方案
可以查看目前的缓存配置的命令
show variables like '%query_cache%'
设置的方法为在 my.ini中
找到query_cache_size,设置值
query_cache_size=128M
如果开始的查询结果中query_cache_type没开启
增加一行
query_cache_type=1
query_cache_type参数用于控制缓存的类型,注意这个值不能随便设置,必须设置为数字
- 如果设置为0,那么可以说,你的缓存根本就没有用,相当于禁用了。
- 如果设置为1,将会缓存所有的结果,除非你的select语句使用SQL_NO_CACHE禁用了查询缓存。
- 如果设置为2,则只缓存在select语句中通过SQL_CACHE指定需要缓存的查询。
OK,配置完后的部分文件如下:
query_cache_size=128M
query_cache_type=1
保存文件,重新启动MYSQL服务。
进行测试。
设置缓存后,服务器的运行速度为2秒,比本地快了3倍,本地是6秒
query_cache_wlock_invalidate:控制当有写锁定发生在表上的时刻是否先失效该表相关的 Query Cache,
- 如果设置为 1(TRUE),则在写锁定的同时将失效该表相关的所有 Query Cache,
- 如果设置为0(FALSE)则在锁定时刻仍然允许读取该表相关的 Query Cache。