1:sql的执行次数分析:

sql: show global status like 'com_______'

解释:通过该命令可以查看当前数据库下的增删改查的使用次数,来采取对应的优化处理. value值就是执行的次数.

2:慢查询日志

sql: show variables like '%slow_query_log%';

      慢查询日志会记录超出自己设置的时间还没有执行完毕的sql.   默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。

可以看到, 默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的,可以通过设置slow_query_log的值来开启

开启慢查询日志sql: set global slow_query_log=1;

设置慢查询的超时时间: set global long_query_time=2; 以秒为单位

 注意: 使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,MySQL重启后则会失效。如果要永久生效,就必须修改配置文件my.cnf

找到日志文件打开,就会看到如上图所示,记录了超时的sql信息.

3:profile分析

1.查看profile是否可用 

SELECT @@profiling;



2: 开启profile:   

SET profiling = 1;

3: 查看当前会话下的所有sql执行时间:

 show profiles;

 4:查看具体sql的每个步骤消耗时间

 show profiles for query  xx;   这个xx是上图的query_id

 可以看到sql每个步骤执行消耗了多长时间  注意:profile是用户级变量,每次都得重新启用

 

 5:查看具体sql的cpu消耗时间

 show profiles cpu  for query  xx;    比上个步骤多了一个cpu字段

 

 

sql的性能分析到此就可以了,剩下的sql优化还需要结合 explain 或者 索引的相关知识进行进一步优化.

可以参考一下我的另外两篇文章:

sql优化之explain关键字分析

sql优化的N种方法

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐