在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
profile是什么 当我们要对某一条sql的性能进行分析时,可以使用它。 Profiling是从 mysql5.0.3版本以后才开放的。 启动profile之后,所有查询包括错误的语句都会记录在内。 关闭会话或者set profiling=0 就关闭了。(如果将profiling_history_size参数设置为0,同样具有关闭MySQL的profiling效果。) 此工具可用来查询SQL执行状态,System lock和Table lock 花多少时间等等, 对定位一条语句的I/O消耗和CPU消耗 非常重要。(SQL 语句执行所消耗的最大两部分资源就是IO和CPU) --在mysql5.7之后,profile信息将逐渐被废弃,mysql推荐使用performance schema mysql官网定义
简单的说,当前会话资源的消耗情况。 注意:show profile和show Profiles都是不建议使用的,在mysql后期的版本中可能会被删除;官网建议使用Performance Schema 怎么使用 profile默认关闭,生产环境中也建议关闭。 查看当前环境的profile设置 mysql> show variables like '%profiling%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | have_profiling | YES | | profiling | OFF | | profiling_history_size | 15 | +------------------------+-------+ profiling off表示profile关闭,profiling_history_size 15表示保存最近15条SQL的资源消耗情况。 开启profile功能,可以使用命令 set global profiling = 1; 然后就可以使用下面命令 show profiles; 查看最近15条SQL的情况; 如果要查看某一条的具体情况,SQL格式为: SHOW PROFILE [type [, type] ... ] [FOR QUERY n] [LIMIT row_count [OFFSET offset]] type: { ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY | PAGE FAULTS | SOURCE | SWAPS } 官网对type中各个字段的解释为:
profiling 对每个会话有效,当会话结束后,当前的profiling信息就会丢失。 使用案例 mysql> show profiles; +----------+------------+----------------------------+ | Query_ID | Duration | Query | +----------+------------+----------------------------+ | 1 | 0.00060275 | select * from customers | | 2 | 0.00222450 | show tables | | 3 | 0.00567425 | select * from offices | | 4 | 0.00052050 | show tables | | 5 | 0.01123300 | select * from payments | | 6 | 0.00111675 | show tables | | 7 | 0.02049625 | select * from productlines | +----------+------------+----------------------------+ 在排查SQL执行情况,或者是哪条SQL执行非常慢,慢在哪里;profile都是非常的辅助工具。 显示一条SQL的具体花销在哪里 mysql> show profile for query 7; +----------------------+----------+ | Status | Duration | +----------------------+----------+ | starting | 0.000043 | | checking permissions | 0.000005 | | Opening tables | 0.014552 | | init | 0.000025 | | System lock | 0.000009 | | optimizing | 0.000004 | | statistics | 0.000011 | | preparing | 0.000010 | | executing | 0.000003 | | Sending data | 0.005653 | | end | 0.000010 | | query end | 0.000009 | | closing tables | 0.000020 | | freeing items | 0.000121 | | cleaning up | 0.000023 | +----------------------+----------+ 信息一目了然,这样我就能对SQL执行情况有个大概的了解。 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对极客世界的支持。 |
请发表评论