千家信息网

使用profile对Mysql调优的方法

发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,下文主要给大家带来使用profile对Mysql调优的方法,希望这些内容能够带给大家实际用处,这也是我编辑使用profile对Mysql调优的方法这篇文章的主要目的。好了,废话不多说,大家直接看下文吧
千家信息网最后更新 2024年11月21日使用profile对Mysql调优的方法

下文主要给大家带来使用profile对Mysql调优的方法,希望这些内容能够带给大家实际用处,这也是我编辑使用profile对Mysql调优的方法这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

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

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

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

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

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

profile工具使用

  1. 查看自己的mysql版本:

    mysql> select version(); +------------+| version()  |+------------+| 5.6.35-log |+------------+
  2. 查看是否开启profile功能(profiling=on代表开启):

    mysql> show variables like '%profil%';+------------------------+-------+| Variable_name          | Value |+------------------------+-------+| have_profiling        | YES  || profiling              | OFF    || profiling_history_size | 15    |+------------------------+-------+
  3. 开启profile:

    mysql> set profile=1;
  4. 开启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;
  5. 查看生成的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` |+----------+------------+--------------------------------------------------------------------------------------------------------+
  6. 获取指定的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 |+----------------------+----------+
  7. 关闭profile:

    mysql> set profiling=0;
  8. 相关具体的参数:

    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. 一般简易的流程:

    (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分析

对于以上关于使用profile对Mysql调优的方法,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。


开销 信息 语句 分析 查询 消耗 方法 内容 时间 下文 工具 性能 性能分析 版本 帮助 重要 上下 上下文 代表 使用量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库关系表怎么新增 电脑显示输入网络安全密匙 婺源天气预报软件开发 飞象美粤网络技术有限公司电话 河南电脑软件开发定制 怎么查看我进的是哪个服务器 字典存储数据库 如何登陆阿里云服务器 我们从服务器检索内容时 网络安全与信息画报不要文字 查找数据库用户密码 数据库建立通知 合肥仓库管理软件开发 华为邮箱收件服务器设置 德阳软件开发真心青岗科技 给软件开发面试需要问些什么 web服务器默认端口号是80吗 秦淮区app软件开发 安徽深圳网络安全培训简单易学 张湾区专业软件开发包括哪些 空间数据库管理系统实习报告 位置定位软件开发好处 语音聊天软件开发哪种品牌的好 严守政治纪律强化网络安全 游戏服务器同时断开 方配在线考试系统数据库在哪 警校信息网络安全监察专业累不累 数据库损坏微信聊天记录能恢复吗 百色市网络安全保卫支队 软件开发失败了怎么做账
0