• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Mysql调优之profile的使用方法

Mysql调优之profile的使用方法

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了mysql优化,mysql,profile,性能分析等相关知识,希望本文的分享对您有所帮助
本篇文章给大家带来的内容是关于Mysql调优之profile的使用方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

  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 t1
    left join 
    (select a.* from pre_forum_threadmod as a,(select tid,max(dateline) as dateline from pre_forum_threadmod group by tid) as b
    where a.tid=b.tid and a.dateline=b.dateline) as t2
    on t1.tid=t2.tid
    where 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分析

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

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于MYSQL中优化的一些方法
  • MySQL的重装问题解决方法
  • 如何解决mysql重装失败方法介绍
  • mysql服务启动不了解决方案
  • mysql 无限级分类实现思路
  • mysql 判断记录是否存在方法比较
  • mysql 优化日记
  • MYSQL 优化常用方法
  • MySQL 优化设置步骤
  • Mysql调优之profile的使用方法

相关文章

  • 2017-05-11深入Mysql字符集设置 图文版
  • 2018-12-05SQL语言查询基础:连接查询 联合查询 代码
  • 2018-12-05sqlserver 导出插入脚本代码
  • 2018-12-05MySQL中关于prepare原理的详解
  • 2018-12-05ASP数据库编程SQL常用技巧
  • 2018-12-05MYSQL实现连续签到断签一天从头开始方法实例
  • 2018-12-05关于mysql create routine权限的代码实例详解
  • 2018-12-05mysql-MYsql 数据库 ,有个sql如何写
  • 2018-12-05MYSQL知识点总结分享
  • 2018-12-05SQL Transcation的一些总结分享

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQLServer XML查询快速入门(18句话)
    • Mac上实现终端管理MySQL数据库
    • 让MySQL支持中文排序的实现方法
    • SQL Server 数据库优化
    • MySql事务无法回滚的原因有哪些
    • 高性能MySQL读书笔记 找出谁持有锁
    • 如何使用JSP连接MySQL数据库的方法
    • Access数据库提示OleDbException (0x80004005): 操作必须使用一
    • SQLServer 2008 新增T-SQL 简写语法
    • 关于UPDATE触发器的详细介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有