设为首页 收藏本站
查看: 5739|回复: 0

[经验分享] MySQL 的 Query Profiler使用

[复制链接]

尚未签到

发表于 2018-10-4 08:45:18 | 显示全部楼层 |阅读模式
  MySQL 的 Query Profiler 是一个使用非常方便的 Query 诊断分析工具,通过该工具可以获取一条 Query  在整个执行过程中多种资源的消耗情况,如 CPU、IO、IPC、SWAP等,以及发生的 PAGE FAULTS、CONTEXT SWITCHE等,同时还能得到该  Query 执行过程中 MySQL 所调用的各个函数在源文件中的位置。下面看看 Query Profiler 的具体用法。
  首先可以查看目前mysql中profiler是否开启:
  


  • mysql> SELECT @@profiling;
  • +-------------+ | @@profiling | +-------------+ |           0 | +-------------+ 1 row in set (0.00 sec)
  

  开启profiler:
  


  • mysql> SET profiling = 1;
  •    Query OK, 0 rows affected (0.00 sec)
  

  在开启 Query Profiler 功能之后,MySQL 就会自动记录所有执行的 Query 的profile 信息。下面执行 Query:
  


  • mysql> select count(*) from order_items;
  • +----------+
  • | count(*) |
  • +----------+
  • |   154258 |
  • +----------+
  • 1 row in set (0.62 sec)

  • mysql> show profiles;
  • +----------+------------+------------------------------------+
  • | Query_ID | Duration   | Query                              |
  • +----------+------------+------------------------------------+
  • |        1 | 0.04020500 | select * from orders where id=2090 |
  • |        2 | 0.02056800 | select count(*) from t1 |
  • |        3 | 0.00059800 | select count(*) from t1 |
  • |        4 | 0.00036700 | ser profiler=0                     |
  • |        5 | 0.00053300 | select @@profiling                 |
  • |        6 | 0.62734100 | select count(*) from order_items   |
  • +----------+------------+------------------------------------+
  • 6 rows in set (0.00 sec)
  

  获取概要信息之后,就可以根据概要信息中的 Query_ID 来获取某个 Query 在执行过程中详细的 profile 信息了,如果要查看CPU和IO消耗,具体操作如下:
  


  • mysql> show profile cpu, block io for query 6;
  • +----------------------+----------+----------+------------+--------------+---------------+
  • | Status               | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
  • +----------------------+----------+----------+------------+--------------+---------------+
  • | starting             | 0.000064 | 0.000000 |   0.000000 |            0 |             0 |
  • | checking permissions | 0.000015 | 0.000000 |   0.000000 |            0 |             0 |
  • | Opening tables       | 0.390653 | 0.000000 |   0.000000 |            0 |             0 |
  • | System lock          | 0.000028 | 0.000000 |   0.000000 |            0 |             0 |
  • | init                 | 0.000019 | 0.000000 |   0.000000 |            0 |             0 |
  • | optimizing           | 0.000010 | 0.000000 |   0.000000 |            0 |             0 |
  • | statistics           | 0.000017 | 0.000000 |   0.000000 |            0 |             0 |
  • | preparing            | 0.000015 | 0.000000 |   0.000000 |            0 |             0 |
  • | executing            | 0.000011 | 0.000000 |   0.000000 |            0 |             0 |
  • | Sending data         | 0.235932 | 0.036002 |   0.000000 |            0 |             0 |
  • | end                  | 0.000018 | 0.000000 |   0.000000 |            0 |             0 |
  • | query end            | 0.000018 | 0.000000 |   0.000000 |            0 |             0 |
  • | closing tables       | 0.000023 | 0.000000 |   0.000000 |            0 |             0 |
  • | freeing items        | 0.000500 | 0.000000 |   0.000000 |            0 |             0 |
  • | logging slow query   | 0.000009 | 0.000000 |   0.000000 |            0 |             0 |
  • | cleaning up          | 0.000009 | 0.000000 |   0.000000 |            0 |             0 |
  • +----------------------+----------+----------+------------+--------------+---------------+
  • 16 rows in set (0.03 sec)
  

  下面列出了show profile的参数:
  


  • 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
  

  Optional type values may be specified  to display specific additional types of information:


  •   ALL displays all information

  •   BLOCK IO displays counts for block input and  output operations

  •   CONTEXT SWITCHES displays counts for voluntary and  involuntary context switches

  •   CPU displays user and system CPU usage times

  •   IPC displays counts for messages sent and received

  •   MEMORY is not currently implemented

  •   PAGE FAULTS displays counts for major and minor  page faults

  •   SOURCE displays the names of functions from the  source code, together with the name and line number of the file in which the  function occurs

  •   SWAPS displays swap counts

  注意:Profiling只是针对单个session的,如果session结束,profiling信息将丢失!
  可以在 INFORMATION_SCHEMA中的profiling表中获取profiling信息,
  下面的两句输出结果是一致的:
  


  • mysql>SHOW PROFILE FOR QUERY 6;

  • mysql>SELECT STATE, FORMAT(DURATION, 6) AS DURATION   
          FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID = 6 ORDER BY SEQ;

  
  




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-611677-1-1.html 上篇帖子: mysql 经典语句 下篇帖子: MySQL的information_schema
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表