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种方法
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #MySQL #分析sql #1sql的执行次数分析 #SQL #show #global #status #like