1.show Profile是什么
show Profile :是mysql提供用来分析当前回话中语句执行消耗资源的情况,可以用来SQL调优。
2.show Profile官网参考
官网:https://dev.mysql.com/doc/refman/8.0/en/show-profile.html
3.查看数据库是否支持show Profile
show variables like '%profiling%'
show Profile开启与关闭
###################开启profile################
set profiling = on
##################关闭profile################
set profiling = off
show Profile使用
第一步:开启 set profiling = on
第二步:执行SQL,就会生成profile记录
第三步:查看开启后profile运行结果
#########查看show profiles 开启后执行记录
show PROFILES;
第四步:诊断SQL(会展示某个sql查询的具体生命周期)
#####################查询具体Query_Id占用的时间#########################
#######################7表示query_id############3333
show profile cpu ,block io for query 7;
除了查看cpu和IO还可以添加这样的参数(主要是用cpu和IO分析)
ALL :显示所有的开销
BLOCK IO 显示块IO开销
CONTEXT SWITCHES :上下文切换的开销
CPU :显示CPU相关的开销
IPC:显示发送和接收的开销
MEMORY:显示内存相关的开销
PAGE FAULTS 显示页面错误方面的开销
SOURCE:显示source_function ,source_file方面开销
SWAPS:显示交换次数方面的开销
show profiles优化的四个评判标准(重要!!!!)
converting HEAP to MyISM :查询结果太大,内存不够用往磁盘上写
creating temp table :创建临时表,将数据拷贝到临时表中,用完再删除(十分耗时)。
copying to temp table on disk :把内存中的临时表复制到磁盘(十分危险,必须优化)
locked :死锁
延伸:除了用show profile 外还可以通过全局日志查询(千万不能在生产环境中用!!!!!!,只能在测试环境中用)(不推荐,建议通show profile)
查看全局日志开启状态
show variables like '%general_log%'
全局日志开启与关闭命令
###############开启是1################
set global general_log = 1
###############关闭是0################
set global general_log = 0
###############输出表###############
set global log_output = 'TABLE'
开启后执行的sql日志的查询
select * from mysql.general_log;