在本章第一节中我们还提到过通过 Query Profiler 来定位一条 Query 的性能瓶颈,这里我们再详细介绍一下 Profiling 的用途及使用方法。

要想优化一条 Query,我们就需要清楚的知道这条 Query 的性能瓶颈到底在哪里,是消耗的 CPU计算太多,还是需要的的 IO 操作太多?要想能够清楚的了解这些信息,在 MySQL 5.0 和 MySQL 5.1正式版中已经可以非常容易做到了,那就是通过 Query Profiler 功能。

MySQL 的 Query Profiler 是一个使用非常方便的 Query 诊断分析工具,通过该工具可以获取一条Query 在整个执行过程中多种资源的消耗情况,如 CPU,IO,IPC,SWAP 等,以及发生的 PAGE FAULTS,CONTEXT SWITCHE 等等,同时还能得到该 Query 执行过程中 MySQL 所调用的各个函数在源文件中的位置。

下面我们看看 Query Profiler 的具体用法。

1、 开启 profiling 参数

root@localhost : (none) 10:53:11> set profiling=1;
Query OK, 0 rows affected (0.00 sec)

通过执行 “set profiling”命令,可以开启关闭 Query Profiler 功能。

2、 执行 Query

... ...
root@localhost : test 07:43:18> select status,count(*)
-> from test_profiling group by status;
+----------------+----------+
| status | count(*) |
+----------------+----------+
| st_xxx1 | 27 |
| st_xxx2 | 6666 |
| st_xxx3 | 292887 |
| st_xxx4 | 15 |
+----------------+----------+
5 rows in set (1.11 sec)
... ...

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

3、获取系统中保存的所有 Query 的 profile 概要信息

root@localhost : test 07:47:35> show profiles;
+----------+------------+------------------------------------------------------------+
| Query_ID | Duration | Query
|
+----------+------------+------------------------------------------------------------+
| 1 | 0.00183100 | show databases
|
| 2 | 0.00007000 | SELECT DATABASE()
|
| 3 | 0.00099300 | desc test
|
| 4 | 0.00048800 | show tables
|
| 5 | 0.00430400 | desc test_profiling
|
| 6 | 1.90115800 | select status,count(*) from test_profiling group by status |
+----------+------------+------------------------------------------------------------+
3 rows in set (0.00 sec)

通过执行 “SHOW PROFILE” 命令获取当前系统中保存的多个 Query 的 profile 的概要信息。

4、针对单个 Query 获取详细的 profile 信息。

在获取到概要信息之后,我们就可以根据概要信息中的 Query_ID 来获取某个 Query 在执行过程中

详细的 profile 信息了,具体操作如下:

上面的例子中是获取 CPU 和 Block IO 的消耗,非常清晰,对于定位性能瓶颈非常适用。希望得到取其他的信息,都可以通过执行 “SHOW PROFILE *** FOR QUERY n” 来获取,各位读者朋友可以自行测试熟悉。

转自 《MySQL性能优化与架构设计》

MySQL Profiling 的使用相关推荐

  1. mysql profiling表_Mysql-性能分析(profiling 工具)

    Mysql-性能分析(profiling 工具) 说明 profiling 工具可以用来查看sql语句的执行时间,可以用来查看sql语句的详细执行过程 基本命令 1.查看profiling的开启情况, ...

  2. mysql profiling表_mysql8 参考手册-INFORMATION_SCHEMA PROFILING表

    PROFILING表提供语句分析信息.其内容对应于SHOW PROFILE和SHOW PROFILES 语句产生的信息(请参见第13.7.7.30节" SHOW PROFILE语句" ...

  3. mysql profiling 应用

    1)先打开profiling ==> set profiling = 1; mysql> set profiling = 1; Query OK, 0 rows affected (0.0 ...

  4. mysql profiling详解_使用mysql profiling功能剖析单条查询

    5.1版本开始引入show profile剖析单条语句功能,支持show profiles和show profile语句,参数have_profiling;控制是否开启: 查看是否支持这个功能(查询为 ...

  5. MySQL全面优化,速度飞起来

    在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已. 图-MySQL查询过程 一.优化的哲学 ...

  6. MySQL 性能优化之高阶神技

    一.前言 MySQL调优对于很多程序员而言,都是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰. 在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询 ...

  7. mysql sql 1到10_(1.10)SQL优化——mysql 常见SQL优化

    (1.10)常用SQL优化 insert优化.order by 优化 1.insert 优化 2.order by 优化 [2.1]mysql排序方式: (1)索引扫描排序:通过有序索引扫描直接返回有 ...

  8. 攻破MySQL性能瓶颈必知的调优技巧

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 来源:clsn.io/clsn/lx287.html 一.前言 MySQL调优对于很多程序员 ...

  9. 史上最全的MySQL高性能优化实战总结!

    https://www.jianshu.com/p/4af41b682e06 1.1 前言 MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思 ...

最新文章

  1. Ubuntu下载地址
  2. 快速学习使用springmvc、strust2、strust1以及它们的对比
  3. [转] vim自定义配置 和 在ubnetu中安装vim
  4. markdown 常用语法总结 - 个人版
  5. 正则表达式与python re
  6. python炒股日记_自学python的日记分享
  7. python两大特性与四大语法_Day 1:Python 两大特性和四大基本语法
  8. 伪标记是一种简单的半监督学习方法
  9. HEVC帧间预测之三——TEncCu::xCheckRDCostMerge2Nx2N函数分析
  10. 由PPP项目总结的几点项目经验
  11. SaaS第一,股价暴涨,25年的金蝶迎来第二春
  12. TDB和SPARQL
  13. Pytorch模型通过paddlelite部署到嵌入式设备
  14. C语言文件输入输出函数总结
  15. 多可文档管理系统_您的框架有多可扩展性?
  16. 零线和地线接反了会发生什么?
  17. html元素的overflow属性详解
  18. 记录写博文用到的一些工具
  19. solar2lunar 实现农历、天干地支
  20. 董导微博rust视频_如何评价综艺节目《歌手2019》第十一期?

热门文章

  1. Java开发最常犯的10个错误,打死都不要犯!
  2. 学习利器:工欲善其事,必先利其器
  3. 剑指offer_第17题_树的子结构_Python
  4. Docker常用命令大全
  5. 重磅!2021泰晤士世界大学排名公布!
  6. 如何用 Python 分析 14 亿条数据?
  7. 函数assert()详解
  8. 这篇文章,或许可以改善你的不快乐。
  9. Tomcat版本不同,功能区别也是很大!
  10. ACMNO.42 C语言-第几天 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。利用结构体的在最下面