Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Mysql调优之profile的使用方法_创想鸟

Mysql调优之profile的使用方法

本篇文章给大家带来的内容是关于Mysql调优之profile的使用方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

在我们做mysql性能分析的时候,最常用的有三种方式:

(1)慢查询 (分析出现出问题的sql)
(2)Explain (显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句)
(3)Profile(查询到 SQL 会执行多少时间, 并看出 CPU/Memory 使用量, 执行过程中 Systemlock, Table lock 花多少时间等等.)

本章主要是对profile做简单的概述,用来对某一条sql语句进行性能分析。

Profiling是从 mysql5.0.3版本以后才开放的。但是在mysql5.7之后,profile信息将逐渐被废弃,mysql推荐使用performance schema。

profile此工具可用来查询SQL执行状态,System lock和Table lock 花多少时间等等,对定位一条语句的I/O消耗和CPU消耗 非常重要。(SQL 语句执行所消耗的最大两部分资源就是IO和CPU)

profile工具使用

查看自己的mysql版本:

mysql> select version(); +------------+| version()  |+------------+| 5.6.35-log |+------------+

查看是否开启profile功能(profiling=on代表开启):

mysql> show variables like '%profil%';+------------------------+-------+| Variable_name          | Value |+------------------------+-------+| have_profiling        | YES  || profiling              | OFF    || profiling_history_size | 15    |+------------------------+-------+

开启profile:

法语写作助手 法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31 查看详情 法语写作助手

mysql> set profile=1;

开启profile之后,执行要分析的sql语句:

mysql> select t1.*,t2.action from pre_forum_thread as t1left join (select a.* from pre_forum_threadmod as a,(select tid,max(dateline) as dateline from pre_forum_threadmod group by tid) as bwhere a.tid=b.tid and a.dateline=b.dateline) as t2on t1.tid=t2.tidwhere t1.displayorder>=0 and t1.fid in (47,49) and t1.tid > 100318 and (t1.authorid =7683017 or t2.action'DWN' or t2.action is null )order by t1.dateline desc limit 20;

查看生成的profile信息:

mysql> show profiles;+----------+------------+--------------------------------------------------------------------------------------------------------+| Query_ID | Duration  | Query                                                                                                  |+----------+------------+--------------------------------------------------------------------------------------------------------+|        1 | 1.37183777 | select t1.*,t2.action from pre_forum_thread as t1  ||        2 | 0.00078796 | show columns from `bbs`.`t2` ||        3 | 0.00150425 | show columns from `bbs`.`pre_forum_thread` |+----------+------------+--------------------------------------------------------------------------------------------------------+

获取指定的query语句的开销:

mysql> show profile for query 2; +----------------------+----------+| Status              | Duration |+----------------------+----------+| starting            | 0.000147 || checking permissions | 0.000023 || Opening tables      | 0.000047 || init                | 0.000081 || System lock          | 0.000031 || optimizing          | 0.000034 || statistics          | 0.001650 || preparing            | 0.000046 || executing            | 0.000018 || Sending data        | 2.460588 || end                  | 0.000041 || query end            | 0.000019 || closing tables      | 0.000022 || freeing items        | 0.000055 || cleaning up          | 0.000085 |+----------------------+----------+

关闭profile:

mysql> set profiling=0;

相关具体的参数:

type:    ALL                --显示所有的开销信息  | BLOCK IO          --显示块IO相关开销  | CONTEXT SWITCHES  --上下文切换相关开销  | CPU                --显示CPU相关开销信息  | IPC                --显示发送和接收相关开销信息  | MEMORY            --显示内存相关开销信息  | PAGE FAULTS        --显示页面错误相关开销信息  | SOURCE            --显示和Source_function,Source_file,Source_line相关的开销信息  | SWAPS              --显示交换次数相关开销的信息 例如,想要查看cpu和io开销可以执行命令:mysql> SHOW profile CPU,BLOCK IO  FOR query 2;

总结

一般简易的流程:

(1)set profiling=1; //打开profile分析(2)run your sql1;(3)run your sql2;(4)show profiles;    //查看sql1,sql2的语句分析(5)SHOW profile CPU,BLOCK IO io FOR query 1; //查看CPU、IO消耗(6)set profiling=0; //关闭profile分析

以上就是Mysql调优之profile的使用方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/380318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
屏幕、性能和续航同档领先 iQOO Neo10 Pro+到手2799起
上一篇 2025年11月6日 11:07:08
【公布】华虹宏力“Nord闪存及Nord闪存电性参数的测试方法”专利公布
下一篇 2025年11月6日 11:07:15

相关推荐

发表回复

登录后才能评论
关注微信