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

embedded/2024/10/18 1:38:09/

目录

什么是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.ppmy.cn/embedded/126386.html

相关文章

「3.3」虫洞 Wormholes

多组数据不清零——见祖宗 「3.3」虫洞 Wormholes 问题背景 「一本通3.3 练习2」 题目描述 John 在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John 的每…

Ubuntu安装Apache教程

系统版本:Ubuntu版本 23.04 Ubuntu是一款功能强大且用户友好的操作系统,而Apache是一款广泛使用的Web服务器软件。在Ubuntu上安装Apache可以帮助用户搭建自己的网站或者进行Web开发。为大家介绍如何在Ubuntu上安装Apache,并提供详细的教程和操…

4 机器学习之归纳偏好

通过学习得到的模型对应了假设空间中的一个假设。于是,图1.2的西瓜版本空间给我们带来一个麻烦:现在有三个与训练集一致的假设,但与它们对应的模型在面临新样本的时候,却会产生不同的输出。例如,对(色泽青绿…

rust使用教程详解

欢迎来到 Rustlings。该项目包含一些小练习,让您习惯阅读和编写 Rust 代码。这包括阅读和响应编译器消息! 建议在阅读Rust 官方书籍(学习 Rust 最全面的资源)的同时做 Rustlings 练习 📚️ Rust By Example是另一个推…

DAY7 继承多态

继承 目的 提高代码的重用性,减少一些重复代码的书写 权限修饰符 就是是用来限制类中的成员(成员变量、成员方法、构造器)能够被访问的范围。 private 只能本类 缺省 本类、同一个包中的类 protected 本类,同一个包中的类、子…

系统移植一

使用设备是fs4412开发板 一、系统移植 系统移植是将一个操作系统或软件从一个硬件平台或处理器架构转移到另一个平台的过程。系统移植的主要目标是使软件在新的硬件环境下能够正常运行。在系统移植过程中,主要的改动集中在硬件相关的底层部分以及操作系统的核心模…

ROS2中级面试题汇总

大家好,我是小白小帅,继更新了ros2初级面试题汇总之后,我又马不停蹄的整理了关于ros2的中级面试题(共25道),这些问题也相较于初级面试题上升了一定难度,希望小伙伴们打牢ros2基础,如…

高级java每日一道面试题-2024年10月3日-分布式篇-分布式系统中的容错策略都有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: 分布式系统中的容错策略都有哪些? 我回答: 在分布式系统中,容错策略是确保系统可靠性和高可用性的关键。这些策略旨在处理各种类型的故障,包括硬件故障、软件错误、网络问题等。以下是一些常见的…