【Mysql优化】MySQL 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 的具体用法。

0.可以在执行之前清空查询缓存

reset query cache;

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” 来获取,各位读者朋友可以自行测试熟悉。

原文地址:https://www.cnblogs.com/qlqwjy/p/8593070.html

时间: 2024-10-18 00:08:33

【Mysql优化】MySQL Profiling 的使用的相关文章

MySQL优化-MySQL体系结构

MySQL优化-MySQL体系结构 三层体系结构: 连接层 SQL层 存储层 关于timeout 通过jdbc等程序连接的是非交互会话. 通过mysql cli客户端连接的是交互会话. wait_timeout,关闭非交互连接(程序端)之前等待的秒数.默认8h. interactive_timeout,关闭交互式连接(客户端)前等待的秒数.默认8h. 本节小结: 5.7开始,支持密码过期机制. 8.0开始,支持更多密码安全机制,更安全的MySQL 8.0之全新密码策略. 一些LB应用会疯狂探测数

mysql优化 - mysql 的 hint

FORCE INDEX 强制索引 只使用建立在field1上的索引,而不使用其它字段上的索引. SELECT * FROM table1 FORCE INDEX (field1) IGNORE INDEX 忽略索引 table1 表中field1和field2上的索引不被使用 SELECT * FROM table1 IGNORE INDEX (field1, field2) SQL_NO_CACHE 不对结果集进行缓存,关闭查询缓冲 有一些SQL语句需要实时地查询数据,或者并不经常使用(可能一

mysql优化 mysql explain

一篇文章: 使用use index优化sql查询 先看一下arena_match_index的表结构,大家注意表的索引结构CREATE TABLE `arena_match_index` (  `tid` int(10) unsigned NOT NULL DEFAULT '0',  `mid` int(10) unsigned NOT NULL DEFAULT '0',  `group` int(10) unsigned NOT NULL DEFAULT '0',  `round` tinyi

mysql优化-mysql最大连接数

########################### 修改mysql最大连接数 ############################### MYSQL数据库安装完成后,默认最大连接数是100, 一般生产环境的论坛或网站是远远不够的,以下提供两种修改MYSQL最大连接数的方法 ---------------------- 方法1:在线修改mysql最大连接数 --------------------------- 特点:对于mysql在使用中无法停机重启的情况,可以在mysql运行情况下修改

优化MySQL,还是使用缓存?读一篇文章有感

今天我想对一个Greenfield项目上可以采用的各种性能优化策略作个对比.换言之,该项目没有之前决策强加给它的各种约束限制,也还没有被优化过. 具体来说,我想比较的两种优化策略是优化MySQL和缓存.提前指出,这些优化是正交的,唯一让你选择其中一者而不是另一者的原因是他们都耗费了资源,即开发时间. 优化MySQL 优化MySQL时,一般会先查看发送给mysql的查询语句,然后运行explain命令.稍加审查后很常见的做法是增加索引或者对模式做一些调整. 优点 1.一个经过优化的查询对于所有使用

MySQL优化工具之 profiling

MySQL优化工具之profiling 使用慢查询日志分析出慢查询语句后,用profiling分析该语句的优化后执行效果. 查看慢查询设置 mysql> show variables like "%slow%"; +---------------------+---------------------------------+ | Variable_name       | Value                           | +------------------

Mysql优化(转)

Mysql优化主要通过执行计划,索引,sql语句,调整mysql内部配置 (http://blog.chinaunix.net/uid-11640640-id-3426908.html) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)  

网站优化—MySQL优化

MySQL优化 简介 由于页面静态化技术可以实现对动态数据的缓存,但是有的时候还是需要去请求数据库.所以对数据库的优化也是不可缺少的. 优化思路 设计:存储引擎,字段,范式 自身:索引,自身的缓存 架构:读写分离 ? 存储引擎: MyISAM和InnoDB之间的对比.当然需要知道MySQL除了这两种存储引擎还有其他的存储引擎(memory存储引擎). MySQL在5.5版本之后默认的存储引擎为InnoDB 在面试的过程中,只要说出MyISAM和InnoDB的区别即可 ? 字段选择: 合适即好,能

mysql 优化工具

explain  profiling 建议提供以下信息 show table status like 'audit';show create table audit;show index from audit;check table audit; analyze table audit; analyze 并不检查表是否有问题,只是重新分析一下键的分布情况.check table/ repaire table 是检查和修复的语句 SELECT * FROM [TABLE] FORCE INDEX

一.mysql优化

一.mysql优化 1.网站请求走向分析优化的方面 需要优化的地方: a:网络优化,服务器硬件方面,CDN加速(访问离用户最近一台服务器获取资源文件(jquery,js)) b:页面静态化处理,访问速度更快 c:php代码本身需要优化(需要自身经验的积累) d:使用memcache,redis减轻数据库的压力,减少磁盘的i/o开销 e:mysql本身的优化 f:mysql架构(读写分离,主从复制) 2.mysql的优化的方向 存储层:选择合适的存储引擎,选择适当的列类型 设计层:给数据表建立合适