前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql之性能分析工具profiling

Mysql之性能分析工具profiling

作者头像
一个架构师
发布2022-06-20 20:10:31
8870
发布2022-06-20 20:10:31
举报

MySQL中提供了内置的性能分析工具profiling, 今天就一起看下这个工具怎么使用.

首先确认profiling工具状态

查看profiling相关变量: 开关及存储记录数

代码语言:javascript
复制
show VARIABLES like 'profil%'
-------------------------------
profiling       ON
profiling_history_size       15

为了方便测试, 先将存储记录调为100

代码语言:javascript
复制
set profiling_history_size = 100;

准备一条测试SQL

在test库下, 自定义uu表, 执行查询SQL, 分析执行情况.

代码语言:javascript
复制
SELECT _rowid,u.*from test.uu u;

查看SQL ID

查看最近执行的SQL, 可以发现该SQL的query id 是61,

代码语言:javascript
复制
show profiles;

执行sql, 分析各阶段执行情况.

代码语言:javascript
复制
show profile for query 61;

可以发现该SQL执行时间最长的executing阶段.

因为该sql是简单查询, 表中数据又很少, 分析结果也是符合实际情况的.

不过show profile 是一个即将被废弃掉的命令,

官方已经推荐使用performance_schema.profiling表来查看SQL执行情况了.

performance_schema.profiling表结构

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

源码行数

通过profiling表, 分析SQL执行情况:

代码语言:javascript
复制
SELECT * from information_schema.profiling where query_id = 61;

可以发现执行时间是一样的, 同时还增加了更多的信息.

需要注意的是Sending data状态并不是单纯的发送数据,而是包括收集, 发送数据两个阶段.

这里列出来的state并不是所有状态, 比如用到临时表时, 还会有Creating tmp table等状态.

上述例子opening table占用时间最长, 但这只限于当前情况, 在不同的情况下, 占用时间是不同的, 所以一定要根据实际情况分析, 不能一概而论.

有观点认为这是个鸡肋的工具, 并不能提供很好的解决方案. 我想, profiling能从更宏观的角度去发现问题, 提供信息, 算是个很不错的分析工具.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从码农的全世界路过 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档