【mysql】MySQL用profile跟踪语句各阶段性能开销

在用sql server的时候,有个功能叫profile可以用来跟踪语句的具体运行情况。

因此就在想mysql有没有类似的功能。

于是发现同名的跟踪语句。

也许还有更好的性能跟踪语句?日后发现时在此补充。

————————————————————————————

PROFILE  可以跟踪查询语句各个阶段 Time,IO,CPU,MEMORY 等资源使用情况,比较详细。所以系统一般不会记录太多。启用是全局的,所以每个连接都保持语句的资源使用情况。

查看是否启用:

select @@profiling;

查看启用功能以及保存的最近记录:

show variables like '%profiling%';

这条语句后会出现这样的记录:

have_profiling :是否可使用 profiling
profiling :是否启用
profiling_history_size : 保留最近执行的记录数量。默认15,最大100,0相当于禁用。

启用PROFILE为全局变量,并设置保留的执行记录数为10:

set profiling = 1;
set profiling_history_size = 10;

这其中编号越大的记录越晚,越靠近最近执行。

查看以上查询的开销:

SHOW PROFILE Syntax

延申:有关于PROFILE 查询的语句格式:

SHOW PROFILE [type [, type] ... ]
[FOR QUERY n]
[LIMIT row_count [OFFSET offset]]

其中:type的各种参数
type:
ALL
| BLOCK IO
| CONTEXT SWITCHES
| CPU
| IPC
| MEMORY
| PAGE FAULTS
| SOURCE
| SWAPS

例如:

mysql> show profile; #默认显示时间信息
mysql> show profile CPU,BLOCK IO; #(时间)加上 CPU,BLOCK IO 使用情况
mysql> show profile for query 6; #query_id=6(查询第6条记录)的(时间)信息
mysql> show profile CPU for query 6; #query_id=6的cpu信息
mysql> show profile CPU limit 6; #前6个状态信息(前6行)
mysql> show profile CPU limit 6 offset 2;#第2行起前6个状态信息(前2~7行)

设置记录为0,关闭跟踪:

set profiling = 0;
set profiling_history_size = 0;

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值