mysql连接工具错误100061_Mysql之性能分析工具profiling

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

首先确认profiling工具状态

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

show VARIABLES like 'profil%'-------------------------------profiling       ONprofiling_history_size       15

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

set profiling_history_size = 100;

准备一条测试SQL

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

SELECT _rowid,u.*from test.uu u;

d9aff9a0f1bde7a5032cafbf08925c7e.png

查看SQL ID

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

show profiles;

0e98adf87f8f7114df3971a770ea2d4d.png

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

show profile for query 61;

1d29f93aa6ccaea7d94f34035f51c3f5.png

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

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

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

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

performance_schema.profiling表结构1QUERY_ID查询ID, 用于标记不同的查询

2SEQ一个查询内部执行的步骤 , 从2开始

3STATE步骤的状态

4DURATION持续时间(单位: 秒)

5CPU_USER用户空间的cpu使用量

6CPU_SYSTEM内核空间的cpu使用量

7CONTEXT_VOLUNTARY上下文主动切换

8CONTEXT_INVOLUNTARY上下文被动切换

9BLOCK_OPS_IN阻塞输入操作

10BLOCK_OPS_OUT阻塞输出操作

11MESSAGES_SENT消息发送

12MESSAGES_RECEIVED消息接受

13PAGE_FAULTS_MAJOR主分页错误

14PAGE_FAULTS_MINOR次分页错误

15SWAPSswap次数

16SOURCE_FUNCTIONMySQL源码函数

17SOURCE_FILE源码文件

18SOURCE_LINE源码行数

通过profiling表,分析SQL执行情况:SELECT * from information_schema.profiling where query_id = 61;

662ebb77b1d3126d36efac7717a1a56d.png可以发现执行时间是一样的,同时还增加了更多的信息.需要注意的是Sending data状态并不是单纯的发送数据,而是包括收集,发送数据两个阶段.这里列出来的state并不是所有状态,比如用到临时表时,还会有Creating tmp table等状态.上述例子openingtable占用时间最长,但这只限于当前情况,在不同的情况下,占用时间是不同的,所以一定要根据实际情况分析,不能一概而论.有观点认为这是个鸡肋的工具,并不能提供很好的解决方案.我想, profiling能从更宏观的角度去发现问题,提供信息,算是个很不错的分析工具.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值