内容简介:今天客户那边遇到一个问题:多选文件进行操作,数据量一大后台处理就特别慢,浏览器显示504超时。为了验证问题是否出在sql语句,所以用以下方法来分析:下面会分别介绍三个方法的开启方法。general_log:日志记录功能是否开启,默认为OFF
今天客户那边遇到一个问题:多选文件进行操作,数据量一大后台处理就特别慢,浏览器显示504超时。为了验证问题是否出在 sql 语句,所以用以下方法来分析:
- 查询SQL执行记录
- explain 分析
- MySQL 语句执行时间
下面会分别介绍三个方法的开启方法。
查询SQL执行记录
查询日志功能是否开启
show variables LIKE 'general%'; 复制代码
general_log:日志记录功能是否开启,默认为OFF
general_log_file:日志存放路径
开启日志功能
set GLOBAL general_log = 'ON'; 复制代码
然后再次
在指定路径查看SQL记录
explain 分析
大部分的性能分析都需要使用到该命令,可以用来查看SQL语句的执行效果,可以帮助选择更好地索引和优化语句。
语法
explain + SQL语句
输出:
参数解析
id | SELECT识别符。这是SELECT的查询序列号 |
select_type | SELECT类型,可以为以下任何一种:
|
table | 输出的行所引用的表 |
type | 联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序:
|
possible_keys | 指出MySQL能使用哪个索引在该表中找到行 |
key | 显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。 |
key_len | 显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。 |
ref | 显示使用哪个列或常数与key一起从表中选择行。 |
rows | 显示MySQL认为它执行查询时必须检查的行数。多行之间的数据相乘可以估算要处理的行数。 |
filtered | 显示了通过条件过滤出的行数的百分比估计值。 |
Extra | 该列包含MySQL解决查询的详细信息
|
MySQL 语句执行时间
show profile 以及show profiles语句可以显示当前会话过程中执行SQL语句的性能信息。
查看profile是否开启
show variables like '%profil%'; 复制代码
profiling:OFF 默认此功能关闭
设置开启状态
set profiling = 1; 复制代码
再次查看
已经是开启状态
执行sql语句后进行分析
执行完后,输入
show profiles; 复制代码
即可查看所有的sql的执行时间
show profile for query 1 复制代码
查看第1个sql语句的执行的各个操作的耗时详情。
show profile cpu, block io, memory,swaps,context switches,source for query 6; 复制代码
可以查看出一条SQL语句执行的各种资源消耗情况,比如CPU,IO等
show profile all for query 6 查看第6条语句的所有的执行信息。 复制代码
以上所述就是小编给大家介绍的《MySql语句执行分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- SQL语句执行顺序详解
- 一条SQL查询语句的执行过程
- 一条 SQL 查询语句是怎么执行的?
- 一条 SQL 查询语句是怎么执行的?
- 执行一条sql语句都经历了什么?
- MySQL 探秘(二):SQL 语句执行过程详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。