MySQL进阶:sql性能分析
1:sql的执行次数分析:sql: show global status like 'com_______'解释:通过该命令可以查看当前数据库下的增删改查的使用次数,来采取对应的优化处理. value值就是执行的次数.2:慢查询日志sql: show variables like '%slow_query_log%';慢查询日志会记录超出自己设置的时间还没有执行完毕的sql. 默认情况下,Mysq
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 或者 索引的相关知识进行进一步优化.
可以参考一下我的另外两篇文章:
更多推荐
所有评论(0)