【MySQL】11.3性能分析-show profile & 全局查询日志

什么是 show profile?

用来分析当前会话中语句执行的消耗情况。

默认关闭,保存最近 15 次运行结果

一、命令

查看是否开启:

show varibles like 'profiling'

开启:

set profiling=on;

打印 sql 流水:

show profiles;

查看 cpu :

#语句 id是 show profiles 里面的id
show profile cpu,block io for query 语句id

在上面这条语句中,会展示出 sql 的详细生命周期,其中:

  • convert HEAP to MyISAM 表示查询结果过大,内存不够用,需要拷贝到磁盘上,
  • creating tmp table 创建临时表
  • copying to tmp table 拷贝数据到临时表
  • removing tmp table 移除临时表
  • copying to tmp table on disk 把内存中的临时表拷贝到硬盘,locked 表示锁住,
    上述几种情况都是极其损耗性能的。


    参数列举

全局查询日志

此功能可以把所有的 sql 语句记录下来,禁止在正式环境开启。可以用来排查一些奇怪的问题。

方法1,配置文件

general_log=1
general_log_file=/var/example/
#日志格式
log_output=FILE

方法2,命令

set global general_log=1;
# 之后会记录到 `mysql` 库中的一张 general_log 表中
set global general_log_out_put='TABLE';
#查看sql日志
select * from mysql.general_log;

你可能感兴趣的:(【MySQL】11.3性能分析-show profile & 全局查询日志)