(七)MySQL高级——用Show Profile进行sql分析&全局查询日志

本文详细介绍了MySQL中的Show Profile工具,一种用于分析SQL语句执行资源消耗的方法,包括开启、运行及查看分析结果的步骤。通过具体示例,展示了如何利用此工具进行SQL调优,以及在开发中应避免的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Show  Profile 介绍:

是MySQL提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于sql的调优的测试。默认情况下,参数处于关闭状态,并保存最近15次的运行结果。

Show  Profile 分析步骤:

1、是否支持,查看当前的MySQL版本是否支持;

Show variables like 'profiling';
-- 或者
Show variables like 'profiling%';

2、开启功能,默认是关闭状态,使用前需要开启;

-- 开启语句
set profiling=on;

3、运行SQL;

4、查看结果,Show  Profile ;

5、诊断SQL,show profile cpu , block io for query  + 上一步前面的问题SQL数字号码;

-- 举个例子
show profile cpu,block io for query 3;

举个例子,它的执行效果如下:

参数备注:

ALL    ---   显示所有的开销信息
BLOCK  IO   ---   显示块IO相关开销
CONTEXT  SWITCHES   ---   上下文切换相关开销
CPU   ---   显示CPU相关开销信息
IPC   ---   显示发送和接受相关开销信息
 MEMORY   ---   显示内存相关开销信息
PAGE  FAULTS   ---   显示页面错误相关开销信息
SOURCE   ---    显示和Source_function  ,  Source_file  ,  Source_line相关的开销信息
SWAPS   ---   显示交换次数相关开销的信息

6、日常开发需要注意的结论。

(1)converting  HEAP  to  MyISAM:查询结果太大,内存都不够用了继续往磁盘上搬。

(2)Creating  tmp  table 创建临时表:拷贝数据到临时表,用完再删除,过程太麻烦还容易发生意外。

(3)Copying  to  tmp  table  on  disk:把内存中临时表复制到磁盘,危险操作!

(4)locked

比如说举个例子,创建临时表的情况,copying to tmp table就耗费了很长时间。


全局查询日志:只能在测试环境使用,不能在生产环境使用。

配置启用:在mysql的my.cnf中,设置如下

-- 开启
general_log = 1
-- 记录日志文件的路径
general_log_file=/path/logfile
-- 输出格式
log_output=FILE

编码启用:

-- 命令
set global general_log = 1;

set global log_output='TABLE';

效果如图:

此后所编写的sql语句,将会记录到mysql库里的general_log表,可以用该命令查看:

select * from mysql.general_log;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值