MySQL SQL性能分析,快速排查SQL执行慢的原因(SQL优化 一)

在开发和维护数据库应用程序时,优化SQL查询的性能是至关重要的。MySQL提供了一些强大的工具和技术,帮助我们进行SQL性能分析,找出潜在的瓶颈并进行相应的优化。

查看SQL的执行频率

show [ session| global ] status 命令查看服务器状态信息,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次

-- session 是查看当前会话的select(当前数据库,关闭数据库重置) ;
show session status like 'com_select';
-- 查询全部
show session status like  'com_______';
-- global 是查询全局数据(整个连接的所有数据库) ;
show global status like  'com_______';

慢查询日志(Slow Query Log)

MySQL的慢查询日志是一种记录执行时间超过阈值(默认10s)的SQL语句的日志,通过启用慢查询日志,我们可以收集执行时间较长的SQL语句,进而分析和优化这些查询。

-- 通过命令 - 查看慢查询日志状态(默认是开启的)
show variables like 'slow_query_log';
-- 时间参数
show variables like 'long_query_time';

-- 也可以修改

-- 关闭和开启
-- set global slow_query_log = 'off';
set global slow_query_log = 'on';

-- 设置时间阈值,SQL语句执行时间超过10秒,就会视为慢查询,记录慢查询日志
set session long_query_time =10;

命令修改只是对当前回话状态有效,当关闭数据库后,会重置,如果想全局服务器有效,就修改配置文件(Windows是my.ini,一般在MySQL数据安装目录下。Linux是my.cnf ,该文件通常位于 /etc 目录下,或者MySQL安装目录下)。

找到该位置的配置就能修改慢查询日志状态了,1:开启,0:关闭,时间参数是10s

然后执行查询语句,对数量有一定要求(可能10w+数据到达1秒),才能到达慢查询时间阈值。

通过慢查询日志,就可以定位出执行效率比较低的SQL,从而有针对性的进行优化。

explain命令

explain命令是MySQL提供的一个强大的工具,用于分析查询语句的执行计划,通过执行explain命令,我们可以获取查询语句的执行计划、访问的索引、表之间的连接方式等重要信息。这些信息可以帮助我们理解查询的执行过程,找出可能存在的性能问题,并做出相应的优化。

-- 直接在select语句之前加上关键字 explain / desc

explain select 列名 from 表名 where 条件;

-- 
explain select name from employees where name='张三' ;

查询性能分析器(Query Profiler)

MySQL提供了一个查询性能分析器,可以帮助我们深入了解查询语句的执行情况。通过查询性能分析器,我们可以获取查询语句的执行时间、扫描的行数、使用的索引等详细信息。这些信息可以帮助我们找出查询中的瓶颈,并针对性地进行性能优化。

-- 查询profiling状态
SELECT  @@profiling ;


-- 开启或关闭
SET profiling = 1;
SET profiling = 0;

-- 查询SQL耗时
show profiles

-- 查看指定query_id的SQL语句各个阶段的耗时情况
show profile for query 5;

-- 查看指定query_id的SQL语句CPU的使用情况
show profile cpu for query 5;

数据库优化工具

除了MySQL自带的工具外,还有一些第三方的数据库优化工具可以帮助我们进行SQL性能分析。比如,Percona Toolkit(开源工具集)、Enterprise Monitor(是商用的)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值