mysql show prifile基本详解

时间:2024-09-24 19:04:27

show profile
默认情况下,参数处于关闭状态,并保存最近15次的运行结果
查看profile是否开启
  show variables like '%profi%';
开启profile记录功能
  set profiling=on; #永久生效需要在配置文件my.cnf修改
查看执行了哪些命令
  show profiles;
根据上一条命令结果的Query_ID查看某条query的执行过程
  show profile cup,block io for query 11 #11 是Query_ID

show profile用法
type
  all 显示所有的开销信息
  block io 显示块io相关的开销
  context switches 上下文切换相关
  cpu 显示cpu相关开销
  ipc 显示发送和接收相关开销
  memory 显示内存相关开销信息
  page faults 显示页面错误相关开销
  source 显示和Source_function,Source_file,Source_line相关的开销信息
  swaps 显示交换次数相关开销的信息

出现以下信息时其中一个,说明得优化
  converting HEAP to MyISAM查询结果太大,内存都不够用了往磁盘上搬了
  Creating tmp table 创建临时表,拷贝数据到临时表,用完再删除
  copying to tmp table 把内存中临时表复制到磁盘,危险!!!
  locked

全局查询日志
  配置启用
    general_log=1#开启
    general_log_file=/path/logfile#记录日志的路径
    log_output=file#输出格式,file,table等
    开启后,你所编写的SQL语句都将会记录到mysql库里的general_log表里
    可以用select * from mysql.general_log查看
  命令启用
    set general_log=1;
  永远不要在生产环境开启这个功能