内容简介:MySQL5.7中有一个系统默认库 information_schema , 里面有些表如 PROFILING, PROCESSLIST,INNODB_TRX等,其中 PROFILE 对于我们分析sql有很大的帮助,在此以前我们需要使用从 MySQL8.0开始, 这个表也开始被废弃了,以后分析性能问题直接使用另一个系统库 performance_schema 里的相关表(setup_actors)就可以了。到时候 show profiles 和show profile两个命令也不能用了。默认情况下是 OFF
MySQL5.7中有一个系统默认库 information_schema , 里面有些表如 PROFILING, PROCESSLIST,INNODB_TRX等,其中 PROFILE 对于我们分析 sql 有很大的帮助,在此以前我们需要使用 SHOW PROFILE 命令,不过此命令以后将被废弃。下面我们就介绍一下如何使用此表。
从 MySQL 8.0开始, 这个表也开始被废弃了,以后分析性能问题直接使用另一个系统库 performance_schema 里的相关表(setup_actors)就可以了。到时候 show profiles 和show profile两个命令也不能用了。
1.在使用此表前,我们需要开户性能检测功能。
mysql> SELECT @@profiling; +-------------+ | @@profiling | +-------------+ | 0 | +-------------+ 1 row in set (0.00 sec) mysql> SET profiling = 1; Query OK, 0 rows affected (0.00 sec)
默认情况下是 OFF/0 状态。在我们分析完,最好关闭以减少服务器压力。
相关查询命令
show VARIABLES like 'profil%' ------------------------------- profiling ON profiling_history_size 15
2. 了解 information_schema.profiling 表的常用字段
官方文档: https://dev.mysql.com/doc/refman/8.0/en/profiling-table.html
1 | QUERY_ID | 查询ID, 用于标记不同的查询 |
2 | SEQ | 一个查询内部执行的步骤 , 从2开始 |
3 | STATE | 步骤的状态 |
4 | DURATION | 持续时间 |
5 | CPU_USER | 用户空间的cpu 使用量 |
6 | CPU_SYSTEM | 内核空间的cpu 使用量 |
7 | CONTEXT_VOLUNTARY | 上下文主动切换 |
8 | CONTEXT_INVOLUNTARY | 上下文被动切换 |
9 | BLOCK_OPS_IN | 阻塞输入操作 |
10 | BLOCK_OPS_OUT | 阻塞输出操作 |
11 | MESSAGES_SENT | 消息发送 |
12 | MESSAGES_RECEIVED | 消息接受 |
13 | PAGE_FAULTS_MAJOR | 主分页错误 |
14 | PAGE_FAULTS_MINOR | 次分页错误 |
15 | SWAPS | swap 发生的次数 |
16 | SOURCE_FUNCTION | MySQL源码执行函数 |
17 | SOURCE_FILE | 源码文件 |
18 | SOURCE_LINE | 源码行数 |
以下是我执行了一个join语句的输出,从结果中我们可以分析出哪个步骤执行的时间最长,进行相应的优化即可。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 利用jstack定位典型性能问题实例
- Kafka是如何利用零拷贝提高性能的
- 利用React 16.6新特性优化应用性能
- 如何利用 MySQL 攻破数据库性能瓶颈?
- 利用火焰图排查热词服务性能问题
- 如何利用缓存机制实现 Java 类反射性能提升 30 倍
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。