mysql如何检测哪条sql慢了_【MySQL优化】——慢查询sql的检测与记录

前提

在系统的优化过程中,对SQL语句的优化更是非常重要的一部分。系统上线后发现了许多对性能有影响的SQL。本文主要是讲解利用MySQL的一些状态分析并且记录影响数据库性能的语句。

MySQL状态查询

MySQL版本:5.6.24

show status;//MySQL状态查询

分析其中相对好理解的几点

show status like 'com_insert';---显示执行了多少次插入操作 show status like 'com_update';---显示执行了多少次更新 show status like 'com_delete';---显示执行了多少次删除 show status like 'com_select';---显示执行多少次查询 show status like 'uptime';---显示mysql数据库启动多长时间,如果时间很长,数据库表的存储引擎是MyISAM,这个时候要注意碎片整理。

显示慢查询

显示慢查询需要先开始慢查询,MySQL中慢查询默认为关闭状态,查询慢SQL是否开启

show variables like 'slow_query_log';默认为OFF状态

查询记录没有使用索引的查询是否开启(默认没有开启)

show variables like 'log_queries_not_using_indexes'

查询时间慢查询的sql语句的时长(默认10秒)

show variables like 'long_query_time'; 显示慢查询的时间,默认情况下是10秒一个慢查询

开启慢查询后查询慢查询的条数

show status like 'slow_queries';显示慢查询的条数

查看记录慢查询的sql的位置

show variables like 'slow_query_log_file'

查看正在执行的sql语句

select * from information_schema.`PROCESSLIST` where info is not null;

如何修改配置默认配置?

方式一(需要重启mysql服务,但是配置可以持续保留)

#开启慢查询日志记录 slow_query_log=1 #查询时间超过0.1秒的sql语句会被记录 long_query_time=0.1 #记录没有使用索引的查询 log_queries_not_using_indexes=1 #记录慢查询日志的文件地址 slow-query-log-file=/var/lib/mysql/localhost-slow.log

方式二(在mysql控制台修改,无需重启mysql服务,但是配置在MySQL服务重启后就失效了)

#开启慢查询日志记录 mysql> set global slow_query_log=on; #查询时间超过0.1秒的sql语句会被记录 mysql> set long_query_time=0.1; #记录慢查询日志的文件地址 mysql> set global slow_query_log_file="/var/lib/mysql/localhost-slow.log"; #记录没有使用索引的查询 mysql> set global log_queries_not_using_indexes=on;

【总结】

上述这些查询方式目的都是为了检测并且记录影响系统运行的SQL语句,通过这些日志记录,以便在系统优化的时候提供优化的角度。优化道路很长,一步一步的走吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值