MySQL优化

1.关闭查询缓存

首先我们要知道什么是查询缓存:

MySQL Query Cache 会缓存select 查询,安装时默认是开启的,但是如果对表进行INSERT, UPDATE, DELETE, TRUNCATE, ALTER TABLE, DROP TABLE, or DROP DATABASE等操作时,之前的缓存会无效并且删除。这样一定程度上也会影响我们数据库的性能。所以对一些频繁的变动表的情况开启缓存是不明智的。还有一种情况我们测试数据库性能的时候也要关闭缓存,避免缓存对我们测试数据的影响

        

 查询缓存配置
查看当前的MySQL数据库是否支持查询缓存:

SHOW VARIABLES LIKE 'have_query_cache';    
 


查看当前的MySQL数据库是否开启查询缓存:

SHOW VARIABLES LIKE 'query_cache_type';


 


查看查询缓存的占用大小 :

SHOW VARIABLES LIKE 'query_cache_type';


 


查看查询缓存的状态变量:

SHOW VARIABLES LIKE 'query_cache_type';


 

各个变量的含义如下:


Qcache_free_blocks    查询缓存中的可用内存块数
Qcache_free_memory    查询缓存的可用内存量
Qcache_hits    查询缓存命中数
Qcache_inserts    添加到查询缓存的查询数
Qcache_lowmen_prunes    由于内存不足而从查询缓存中删除的查询数
Qcache_not_cached    非缓存查询的数量(由于 query_cache_type 设置而无法缓存或未缓存)
Qcache_queries_in_cache    查询缓存中注册的查询数
Qcache_total_blocks    查询缓存中的块总数
1.4 开启查询缓存
MySQL的查询缓存默认是关闭的,需要手动配置参数 query_cache_type , 来开启查询缓存。query_cache_type 该参数的可取值有三个 :

值    含义
OFF 或 0    查询缓存功能关闭
ON 或 1    查询缓存功能打开,SELECT的结果符合缓存条件即会缓存,否则,不予缓存,显式指定 SQL_NO_CACHE,不予缓存
DEMAND 或 2    查询缓存功能按需进行,显式指定 SQL_CACHE 的SELECT语句才会缓存;其它均不予缓存
在 /usr/my.cnf 配置中,增加以下配置 :


配置完毕之后,重启服务既可生效 ;

然后就可以在命令行执行SQL语句进行验证 ,执行一条比较耗时的SQL语句,然后再多执行几次,查看后面几次的执行时间;获取通过查看查询缓存的缓存命中数,来判定是否走查询缓存。

1.5 查询缓存SELECT选项
可以在SELECT语句中指定两个与查询缓存相关的选项 :

SQL_CACHE : 如果查询结果是可缓存的,并且 query_cache_type 系统变量的值为ON或 DEMAND ,则缓存查询结果 。

SQL_NO_CACHE : 服务器不使用查询缓存。它既不检查查询缓存,也不检查结果是否已缓存,也不缓存查询结果。

例子:

SELECT SQL_CACHE id, name FROM user;
SELECT SQL_NO_CACHE id, name FROM user;

2.SQL慢查询日志

看一下当前mysql数据库是否开启了慢查询

show variables like 'slow_query%';

 可以看到为OFF 未开启

slow_query_log 慢查询开启状态,ON开启,OFF关闭
slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
long_query_time 查询超过多少秒才记录(才算是慢查询)

永久开启慢sql日志(需要修改my.conf)

修改配置文件my.cnf,在[mysqld]下的下方加入

[mysqld]
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/tmp_slow.log     
long_query_time = 1

然后重启mysql服务

systemctl restart mysqld

这是centos7的重启命令(docker部署的mysql无法使用此命令重启)

docker部署的mysql可以参考重启容器的命令

docker restart 容器id或者名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java-superchen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值