当前位置: 首页 > news >正文

『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 //彻底清理


http://www.mrgr.cn/news/47761.html

相关文章:

  • 代码随想录算法训练营Day31 | 455.分发饼干、376.摆动序列、53.最大子数组和
  • 2025年第九届绿色能源与应用国际会议(ICGEA 2025)即将召开!
  • 书店系统小程序的设计
  • 二叉树系列 10/11
  • 如何成为一名认证的低代码开发师?考证和培训指南!
  • TARA详解
  • LESS、SASS 与 SCSS 预处理器详解
  • LLM大模型怎样进行数据和质量测试
  • 在线拍卖|基于springBoot的在线拍卖系统设计与实现(附项目源码+论文+数据库)
  • C++:vector(题目篇)
  • 【Spring】Bean的生命周期
  • 【软件设计师】68道高频考题(附答案),无非就是考这些知识
  • 消防安全小程序推动社会消防安全意识提升
  • PHP生成RSA/ECC密钥对
  • 基于华为云函数工作流Functiongraph的AI风格化编程
  • Unity游戏通用框架——单例模式
  • MySQL中text类型对查询效率的影响
  • 扩散模型代码实战:无条件图像生成扩散模型
  • 零基础也可以搞懂负载均衡怎么配置!
  • 怎样批量删除大量的QQ邮件?