mysql语句性能开销检测profiling详解
转载自 mysql语句性能开销检测profiling详解
之前我介绍过msyql查询优化explain检查命令的使用,explain主要是检查sql语句的基本性能,sql是否优秀,但不能查看具体的涉及硬件资源的开销,今天要介绍的这个profiling工具可以更细节的查看资源的开销,比较详细。
首先这款性能检查工具是针对每个session生效的,session结束了就要重要发起查询检测。
默认是关闭的,需要手动开启:
SET profiling = 1;
开启之后,发往mysql服务器的语句可以通过SHOW PROFILES显示出来,默认显示15条,最大设置为100,通过设置变量profiling_history_size实现,设置为0将会禁用profiling。
语法
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
关于type的定义英文也简单:
ALL displays all information
BLOCK IO displays counts for block input and output operations
CONTEXT SWITCHES displays counts for voluntary and involuntary context switches
CPU displays user and system CPU usage times
IPC displays counts for messages sent and received
MEMORY is not currently implemented
PAGE FAULTS displays counts for major and minor page faults
SOURCE displays the names of functions from the source code, together with the name and line number of the file in which the function occurs
SWAPS displays swap counts
使用示例
查看有没有启用profiling
mysql> SELECT @@profiling;
+-------------+
| @@profiling |
+-------------+
| 0 |
+-------------+
1 row in set (0.00 sec)
开启profiling
mysql> SET profiling = 1;
Query OK, 0 rows affected (0.00 sec)
运行要分析的SQL语句
mysql> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> CREATE TABLE T1 (id INT);
Query OK, 0 rows affected (0.01 sec)
检查所有抓取到的分析语句性能指标
mysql> SHOW PROFILES;
+----------+----------+--------------------------+
| Query_ID | Duration | Query |
+----------+----------+--------------------------+
| 0 | 0.000088 | SET PROFILING = 1 |
| 1 | 0.000136 | DROP TABLE IF EXISTS t1 |
| 2 | 0.011947 | CREATE TABLE t1 (id INT) |
+----------+----------+--------------------------+
3 rows in set (0.00 sec)
显示单个分析语句性能指标,指最近执行次数最多的那一条
mysql> SHOW PROFILE;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| checking permissions | 0.000040 |
| creating table | 0.000056 |
| After create | 0.011363 |
| query end | 0.000375 |
| freeing items | 0.000089 |
| logging slow query | 0.000019 |
| cleaning up | 0.000005 |
+----------------------+----------+
7 rows in set (0.00 sec)
具体查看某条分析语句的性能
mysql> SHOW PROFILE FOR QUERY 1;
+--------------------+----------+
| Status | Duration |
+--------------------+----------+
| query end | 0.000107 |
| freeing items | 0.000008 |
| logging slow query | 0.000015 |
| cleaning up | 0.000006 |
+--------------------+----------+
4 rows in set (0.00 sec)
你也可以查看CPU或者其他资源消耗信息
mysql> SHOW PROFILE CPU FOR QUERY 2;
+----------------------+----------+----------+------------+
| Status | Duration | CPU_user | CPU_system |
+----------------------+----------+----------+------------+
| checking permissions | 0.000040 | 0.000038 | 0.000002 |
| creating table | 0.000056 | 0.000028 | 0.000028 |
| After create | 0.011363 | 0.000217 | 0.001571 |
| query end | 0.000375 | 0.000013 | 0.000028 |
| freeing items | 0.000089 | 0.000010 | 0.000014 |
| logging slow query | 0.000019 | 0.000009 | 0.000010 |
| cleaning up | 0.000005 | 0.000003 | 0.000002 |
+----------------------+----------+----------+------------+
7 rows in set (0.00 sec)
其他使用方式
也可以通过查表的方式查看分析语句的性能,所有show能看到的都会记录在INFORMATION_SCHEMA表中,比如:
SELECT STATE, FORMAT(DURATION, 6) AS DURATION FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID = 2 ORDER BY SEQ;
SHOW与INFORMATION_SCHEMA对应关系表:
INFORMATION_SCHEMA Name
|
SHOW Name
|
Remarks |
---|---|---|
QUERY_ID
|
Query_ID
|
|
SEQ
|
||
STATE
|
Status
|
|
DURATION
|
Duration
|
|
CPU_USER
|
CPU_user
|
|
CPU_SYSTEM
|
CPU_system
|
|
CONTEXT_VOLUNTARY
|
Context_voluntary
|
|
CONTEXT_INVOLUNTARY
|
Context_involuntary
|
|
BLOCK_OPS_IN
|
Block_ops_in
|
|
BLOCK_OPS_OUT
|
Block_ops_out
|
|
MESSAGES_SENT
|
Messages_sent
|
|
MESSAGES_RECEIVED
|
Messages_received
|
|
PAGE_FAULTS_MAJOR
|
Page_faults_major
|
|
PAGE_FAULTS_MINOR
|
Page_faults_minor
|
|
SWAPS
|
Swaps
|
|
SOURCE_FUNCTION
|
Source_function
|
|
SOURCE_FILE
|
Source_file
|
|
SOURCE_LINE
|
Source_line
|
注意
INFORMATION_SCHEMA这个表的使用方式已经在mysql5.7.2已经标记废除了,在未来的版本将会彻底删除掉,SHOW的使用方式在未来的版本也会替代掉,替代使用方式为MySQL Performance Schema,具体的参考官网的使用:https://dev.mysql.com/doc/refman/5.7/en/performance-schema.html
以上profiling所有介绍翻译来源于官网,原版可以参考:https://dev.mysql.com/doc/refman/5.7/en/show-profile.html
mysql语句性能开销检测profiling详解相关推荐
- mysql数据库性能优化—my.cnf详解
MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...
- mysql监控sql_关于对mysql语句进行监控的方法详解
快速阅读 为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控. 我们知道sql server 中有个工具叫sql profile ,可以实时监控sql server中 执行的sql 语句,以 ...
- mysql启动参数(/etc/my.cnf)详解汇总
mysql启动参数(/etc/my.cnf)详解汇总 MYSQL–my.cnf配置中文详解 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = ...
- pdo mysql 绑定查询_php mysql PDO 查询操作的实例详解
php mysql PDO 查询操作的实例详解 php mysql PDO 查询操作的实例详解 这篇文章主要介绍了php mysql PDO 查询操作的实例详解的相关资料,希望通过本文能帮助到大家,需 ...
- mysql dba系统学习-数据库事务详解
mysql dba系统学习-数据库事务详解 上个星期去面试数据库管理员的工作,笔试通过之后就是直接的面试,他问了我一个问题,叫我介绍哈数据库的事务的看法和理解,但是不知所错的没有章法的乱答一气,唉唉, ...
- Linux性能观测——dstat命令详解
dstat dstat 用来替换vmstat.iostat.netstat.nfsstat和ifstat这些命令的工具,可以说是一个全能的系统信息统计工具. 相关命令 Linux存储性能观测--ios ...
- mysql完全备份 二进制日志,MySQL二进制日志备份和恢复详解
原文链接:http://www.showerlee.com/archives/681 ****经实践,该教程ok,特在此分享**** 基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了 ...
- TCP丢包检测技术详解
TCP丢包检测技术详解 http://www.cctime.com/html/2007-12-6/20071261023151210.htm 2007年12月6日 10:23 中 ...
- MySQL操作之JSON数据类型操作详解
MySQL操作之JSON数据类型操作详解 这篇文章主要介绍了MySQL操作之JSON数据类型操作详解,内容较为详细,具有收藏价值,需要的朋友可以参考. 概述 mysql自5.7.8版本开始,就支持了j ...
最新文章
- iot架构 mqtt netty_Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上
- C和C++Everything教程的简介
- 关于dismissViewControllerAnimated值得注意的一点(deinit)
- HTML5中的时间类型,另外EL表达式的时间值来读取时间,并且还可以更改时间
- 训练日志 2019.1.23
- (2)python_enumerate
- 【linux】nmap命令使用
- quartus仿真34:74161构成长度为10的序列发生器
- 6、numpy之文件保存与加载
- 蝉联四年VOT冠军、发表数十篇顶会论文,卢湖川与IIAU实验室的成功之路
- 作为一名程序员如何在国内使用谷歌搜索技术(Google)?
- 我的2014--菜鸟慢慢在长大
- IntelliJ配置jenkins服务的Crumb Data
- Anbox之构建android.img(三)
- 每日启程——2019.12.11日(草木有本心,何求美人折)
- 什么是模块化?为什么要模块化
- 基于Feign的远程服务调用
- 基于javaweb高校教材管理系统的设计与实现
- 小米官网导航栏的实现
- M312: Diagnostics and Debugging chapter 2 Tooling Overview学习记录
热门文章
- 字符串哈希-BKDRHash
- 奔小康赚大钱 HDU - 2255( 二分图匹配KM算法详解)
- c语言函数求pi的近似值,C语言 用π/4=1-1/3+1/5-1/7+... 求π的近似值
- dedemodule.class.php,DEDECMS5.7模块/模块管理列表显示空白问题解决方法
- LRU和LFU的区别
- P4062 [Code+#1]Yazid 的新生舞会 树状数组维护三阶差分
- P2825 [HEOI2016/TJOI2016]游戏
- [十二省联考 2019] 异或粽子(可持久化字典树 + 二叉堆)
- 莓良心(第二类斯特林数)
- Caddi Programming Contest 2021(AtCoder Beginner Contest 193) 题解