今天接触到MySQL系统调优的一个参数:profiling,下面就详细的说一说这个参数是干什么的,怎么用,

一,干什么的

MySQL5.0.37版本以上支持PROFILING调试功能,让您可以了解SQL语句消耗资源的详细信息。因为它需要调用系统的getrusage()函数,所以只是在Linux/Unix类平台上才能使用,而不能在Windows平台上使用。而且,PROFILING是针对处理进程(process)而不是线程(thread)的,服务器上的其他应用,可能会影响您的调试结果,因此,这个工具适合开发过程中的调试,如果要在生产环境中调试使用,则要注意它的局限性,而且只对本次回话有效

二,怎么用

首先查看帮助

mysql> help profiles;
Name: 'SHOW PROFILES'
Description:
Syntax:
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

The SHOW PROFILES and SHOW PROFILE statements display profiling
information that indicates resource usage for statements executed
during the course of the current session.

Profiling is controlled by the profiling session variable, which has a
default value of 0 (OFF). Profiling is enabled by setting profiling to
1 or ON:

查看系统对该参数的设置

mysql> show variables like '%profili%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| have_profiling         | YES   |
| profiling              | OFF   |
| profiling_history_size | 15    |
+------------------------+-------+
3 rows in set (0.01 sec)

mysql>

可以看到默认是OFF状态,存储的大小为15条Query 然后开启该参数

mysql> set profiling=1;
Query OK, 0 rows affected (0.01 sec)

mysql> show variables like '%profili%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| have_profiling         | YES   |
| profiling              | ON    |
| profiling_history_size | 15    |
+------------------------+-------+
3 rows in set (0.00 sec)

mysql>

开始执行需要测试的SQL语句,MySQL数据库将会记录想关的调试信息

mysql> select * from mysql.user;

mysql> show profile; 可以看到刚才执行的这条Query的资源消耗
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000694 |
| checking permissions | 0.000044 |
| Opening tables       | 0.000223 |
| System lock          | 0.000127 |
| init                 | 0.000238 |
| optimizing           | 0.000035 |
| statistics           | 0.000045 |
| preparing            | 0.000022 |
| executing            | 0.000013 |
| Sending data         | 0.000418 |
| end                  | 0.000020 |
| query end            | 0.000008 |
| closing tables       | 0.000227 |
| freeing items        | 0.001550 |
| logging slow query   | 0.000012 |
| cleaning up          | 0.000017 |
+----------------------+----------+
16 rows in set (0.01 sec)

mysql>

也可以显示当前所有已经记录的PROFILES 例如

mysql> show profiles;
+----------+------------+---------------------------------+
| Query_ID | Duration   | Query                           |
+----------+------------+---------------------------------+
|        1 | 0.00270600 | show variables like '%profili%' |
|        2 | 0.00369250 | select * from mysql.user        |
+----------+------------+---------------------------------+
2 rows in set (0.00 sec)

mysql> 默认显示15条 由参数profiling_history_size决定

当执行了多条SQL的时候 我想看看某一条的 可以通过Query_ID来看

mysql> show profile for query 2
    -> ;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000694 |
| checking permissions | 0.000044 |
| Opening tables       | 0.000223 |
| System lock          | 0.000127 |
| init                 | 0.000238 |
| optimizing           | 0.000035 |
| statistics           | 0.000045 |
| preparing            | 0.000022 |
| executing            | 0.000013 |
| Sending data         | 0.000418 |
| end                  | 0.000020 |
| query end            | 0.000008 |
| closing tables       | 0.000227 |
| freeing items        | 0.001550 |
| logging slow query   | 0.000012 |
| cleaning up          | 0.000017 |
+----------------------+----------+
16 rows in set (0.01 sec)

mysql>

当然也可以查看更多的信息如CPU等等

type:
    ALL
  | BLOCK IO
  | CONTEXT SWITCHES
  | CPU
  | IPC
  | MEMORY
  | PAGE FAULTS
  | SOURCE
  | SWAPS

mysql> show profile CPU,SWAPS,BLOCK IO for query 2;
+----------------------+----------+----------+------------+--------------+---------------+-------+
| Status               | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out | Swaps |
+----------------------+----------+----------+------------+--------------+---------------+-------+
| starting             | 0.000694 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| checking permissions | 0.000044 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| Opening tables       | 0.000223 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| System lock          | 0.000127 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| init                 | 0.000238 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| optimizing           | 0.000035 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| statistics           | 0.000045 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| preparing            | 0.000022 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| executing            | 0.000013 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| Sending data         | 0.000418 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| end                  | 0.000020 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| query end            | 0.000008 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| closing tables       | 0.000227 | 0.002000 |   0.000000 |            0 |             0 |     0 |
| freeing items        | 0.001550 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| logging slow query   | 0.000012 | 0.000000 |   0.000000 |            0 |             0 |     0 |
| cleaning up          | 0.000017 | 0.000000 |   0.000000 |            0 |             0 |     0 |
+----------------------+----------+----------+------------+--------------+---------------+-------+
16 rows in set (0.00 sec)

mysql>

测试完成之以后,记得要关闭调试功能,以免影响数据库的正常使用:

mysql> set profiling=0;

mysql 查找具体sql执行性能相关推荐

  1. Mysql体系结构及sql执行过程总结

    Mysql体系结构及sql执行过程总结 一.体系结构图 各模块说明: 1.Connectors:各应用程序与SQL的交互 2. Management Serveices & Utilities ...

  2. MySQL 架构与 SQL 执行流程

    使用的mysql是5.7版本 1. 一条查询 SQL 语句是如何执行的? 程序或者工具要操作数据库,第一步要跟数据库建立连接. 1.1. 通信协议 首先,MySQL 必须要运行一个服务,监听默认的端口 ...

  3. [06][03][01] MySQL架构与SQL执行流程

    文章目录 1. 一条 SQL 语句执行步骤 1.1 通信 1.1.1 通信类型 1.1.2 连接方式 1.1.3 通信协议 1.1.4 通信方式 1.2 查询缓存 1.3 语法解析和预处理 (Pars ...

  4. 提高SQL执行性能方案:如何让你的SQL运行得更快

    ---- 人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略 了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库 环境中(如联机事务处理OLTP或决策 ...

  5. mysql如何分析sql执行效率和进行效率优化

    [0]如何分析mysql中sql执行较慢的问题 步骤1.观察,至少跑一天,看看生产的慢sql情况: 步骤2.开启慢查询日志,设置阈值,比如超过5秒钟就是慢sql, 并将它抓取出来: 步骤3.expla ...

  6. Mysql 慢查询 Sql执行计划 SQL每阶段的耗时

    文章目录 前言 一.慢查询的相关参数 slow_query_log 是否开启了慢查询 开启慢查询 slow_query_log_file 指定慢查询日志的存储路径及文件 long_query_time ...

  7. mysql 查找相似数据_MySQL性能优化做得好的人,都懂的索引绝技

    一步一步推导出 MySQL索引的底层数据结构. MySQL作为互联网中非常热门的数据库,其底层的存储引擎和数据检索引擎的设计非常重要,尤其是 MySQL数据的存储形式以及索引的设计,决定了 MySQL ...

  8. mysql索引及sql执行顺序

    1, 红黑树 同一层级的黑树到根结点经历的黑树数目一样 最坏情况的时间复杂度 lg n 是二叉树 b树 结点可以有多个孩子 b+树 父节点不存储数据 聚集索引)的叶子节点会存储数据行,也就是说数据和索 ...

  9. MySQL数据库:SQL执行顺序

    MySQL数据库是我们常用的关系型数据库之一,对于MySQL,我们写的SQL语句大多包含以下部分: select 字段 from 表 join 连接类型 on 连接字段 where 条件 group ...

最新文章

  1. linux+cp+吃内存怎么办,Linux吃掉了我的内存
  2. 深度学习模型之各种caffe版本(Linux和windows)的网址和配置
  3. [原创] JS 继承详解。欢迎拍砖
  4. java标识符 width_width(宽度)
  5. outlook2016投票_投票:2016年读者选择奖和最佳采访奖
  6. mysql 复制功能_MySQL实现主从复制功能
  7. js中~~和^=分别代表什么,用处是什么?
  8. 【人工智能沙龙】未来,语音识别可能应用于哪些商业化场景?
  9. js requestAnimationFrame
  10. Weblogic配置和部署
  11. AppStore 预览图制作
  12. (数据结构)图的邻接表(Adjacency List)表示方法
  13. Google的地球日图标08版
  14. strftime函数的用法
  15. 算法-动态规划 Dynamic Programming--从菜鸟到老鸟
  16. flash mx拖拽实例_集成Flash MX 2004和Director MX 2004
  17. 电脑磁盘占用100%解决办法
  18. 将一个C类网络(192.168.1.0/24)划分为4个子网,每个子网至少可容纳30台主机,如何划分?
  19. STM32学习笔记(1):STM32简介
  20. 精心整理的超好的共享文库

热门文章

  1. 性能监控的95分位值意义
  2. Springboot+MybatisPlus+layui简易账单管理项目
  3. 社招后端20连问(三年工作经验一面)
  4. Win64下汇编写对话框
  5. 科普-牛顿第二定律的矢量形式
  6. 视频教程-人物绘画教程--成品-原画设计
  7. 一把智能锁真的能防盗吗?有你物联智能家居揭秘你所忽略的防盗漏洞
  8. Web响应重定向301与302
  9. 手游服务端框架之自定义orm持久化工具
  10. Boss直聘职位信息爬取+分析