什么是 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;
网友评论