『Mysql进阶』Mysql SQL语句性能分析(七)

目录

什么是Profile?

开启Profile功能

基本使用

分析案例


什么是Profile

        Query Profiler是 MySQL 自带的一种 Query 诊断分析工具 ,通过它可以分析出一条 SQL 语句的 硬件性能瓶颈 在什么地方。 通常我们是使用的 explain ,以及 slow query log 都无法做到精确分析,但是 Query Profiler 却可以定位出一条 SQL 语句执行的各种资源消耗情况,比如 CPU IO 等,以及该 SQL 执行所耗 费的时间等。
        不过该工具只有在MySQL 5.0.37 以及以上版本中才有实现。 默认的情况下, MySQL 的该功能没有打开,需要自己手动启动

开启Profile功能

Profile 功能由 MySQL 会话变量 : profiling 控制,默认是 OFF 关闭状态。
查看是否开启了Profile功能:
select @@profiling;
-- 或者
show variables like '%profil%';
开启profile功能
-- 1是开启、0是关闭
set profiling=1; 

基本使用

语法:

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 显示所有性能信息
  • BLOCK IO 显示块IO操作的次数
  • CONTEXT SWITCHES 显示上下文切换次数,不管是主动还是被动
  • CPU 显示用户CPU时间、系统CPU时间
  • IPC 显示发送和接收的消息数量
  • MEMORY [暂未实现]
  • PAGE FAULTS 显示页错误数量
  • SOURCE 显示源码中的函数名称与位置
  • SWAPS 显示SWAP的次数
show profile show profiles 语句可以展示 当前会话 ( 退出 session ,profiling 重置为 0) 中执行
语句的资源使用情况 .
show profiles : 以列表形式显示最近发送到服务器上执行的语句的 资源使用情况 ,显示的记录数由变量 : profiling_history_size 控制 , 默认 15
show profile : 展示最近一条语句执行的详细资源占用信息 , 默认显示 Status Duration 两列
show profile 还可根据 show profiles 列表中的 Query_ID , 选择显示某条记录的性能分析信息
-- 查看某条SQL的性能分析信息
show profile for query 1;
-- 查看某条SQL的具体某个指标的性能分析
show profile cpu for query 1;

分析案例

查看是否打开了性能分析功能
select @@profiling;
打开 profiling 功能
set profiling=1;
执行 sql 语句
执行 show profiles 查看分析列表
找到我们执行SQL的Query_ID = 2, 执行show profile
show profile for query 2;
Status各个参数的意思:
1. starting //开始
2. checking permissions //检查权限
3. Opening tables //打开数据表
4. init //初始化
5. Systemlock//锁机制
6. optimizing //优化器
7. statistics //分析语法树
8. prepareing //预准备
9. executing //引擎执行开始
10.end//引擎执行结束
11.query end//查询结束......
12.closing tables //释放数据表
13.freeing items //释放内存
14.cleaning up //彻底清理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值