mysql18-Show Profile和全局日志

摘要:
在MySQL数据库中,您可以通过配置评测参数来启用SQL评测。启用此参数后,后续SQL语句将记录其资源成本,如IO、上下文切换、CPU、内存等。根据这些成本进一步分析当前SQL瓶颈,以进行优化和调整。这比解释更详细。创建临时表Copyingtomptableondisk会将内存中的临时表复制到磁盘,这很危险!默认情况下,该选项处于禁用状态。打开后,将记录所有执行的sql。

1.是什么

  分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析。该参数开启后,后续执行的SQL语句都将记录其资源开销,诸如IO,上下文切换,CPU,Memory等等。根据这些开销进一步分析当前SQL瓶颈从而进行优化与调整。相较于explain更加的详细。

2.官网

http://dev.mysql.com/doc/refman/5.5/en/show-profile.html

3.开启profiling

3.1查看参数

show variables like 'profiling';

mysql18-Show Profile和全局日志第1张

ON表示开启,如果未开启,设置参数开启

3.2设置参数开启

SET GLOBAL profiling = 1

4.设置profiles 记录数

show variables like 'profiling_history_size';

mysql18-Show Profile和全局日志第2张

show profiles 默认显示最近15条的sql执行情况,15这个数字由profiling_history_size常量决定,你可以配置为0到100的数字最大支持100,如果设置为0则类似于关闭profiling选项

5.使用profiles

5.1查看最近执行的sql列表

SHOW PROFILES

mysql18-Show Profile和全局日志第3张

 可以看到最近的15条的sql的执行情况

5.2查看某条记录的详情

show profile [type] for query query_id

type:  
    ALL                --显示所有的开销信息  
  | BLOCK IO           --显示块IO相关开销  
  | CONTEXT SWITCHES   --上下文切换相关开销  
  | CPU                --显示CPU相关开销信息  
  | IPC                --显示发送和接收相关开销信息  
  | MEMORY             --显示内存相关开销信息  
  | PAGE FAULTS        --显示页面错误相关开销信息  
  | SOURCE             --显示和Source_function,Source_file,Source_line相关的开销信息  
  | SWAPS              --显示交换次数相关开销的信息 
show profile cpu,block io for query  59    # 59是Query_ID

mysql18-Show Profile和全局日志第4张

5.3几个大消耗的情况

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

Creating tmp table 创建临时表

Copying to tmp table on disk 把内存中临时表复制到磁盘,危险!

6.全局查询日志

除了profile ,还提供了全局查询日志。默认关闭,开启后,会记录所有执行的sql。最好不要生产环境使用

6.1查看参数

show variables like 'general_log';

mysql18-Show Profile和全局日志第5张

6.2开启

SET GLOBAL general_log = 1

mysql18-Show Profile和全局日志第6张

6.3全局日志的记录方式
全局日志可以存放到日志文件中,也可以存放到Mysql系统表中。存放到日志文件中性能更好一些,默认是存放到日志文件中

6.3.1查看日志存放方式

show variables like 'log_output';

mysql18-Show Profile和全局日志第7张

6.3.2设置日志存放方式

set global log_output='TABLE';  #设置放到表中
set global log_output='FILE'; #设置放到日志文件中

 
6.3.3在表中,可以select查看

select * from mysql.general_log;

mysql18-Show Profile和全局日志第8张

 BLOB的内容,开启备注即可查看到

相较于profile ,全局日志的内容很简单,不够详细。

免责声明:文章转载自《mysql18-Show Profile和全局日志》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# 获取VisionPro的CogToolGroup下的所有层次的ICogTool生成工具树Win10性能提升设置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Zabbix报错信息及遇到的问题

no#范围:128K-2G#默认值:以字节为单位。#机器历史数据请求的共享内存。#设置为0禁用值缓存。##强制:无#范围:...

SAP OBA1 外币评估是基于财务目的,为了不影响报表而做的估算值,在月末进行评估,在下月初进行冲回。

评估报告按行项目显示结果。4.评估策略外币的未清项评估有三种策略:1)期末评估,下期初冲回。因此目前每年底改变外币汇率时进行外币余额和未清项的评估,不冲回。②资产负债表指定日,一般是一年的最后一天。③资产负债表准备评估。如果选择该项,则视为年结评估,不能产生冲销凭证。外币未清项评估是按借贷分别统计后做的调整凭证。...

MySQL学习笔记:字符串前后补全0

遇到一个要求:如果位数小于6,则需要使用函数LPAD()和RPAD()自动完成6位。LPAD使用字符串padstr填充并完成左侧的str,直到其长度达到len个字符,并返回str。...

JavaScript算法学习:获取字符串最后一位方法及判断是否以指定字符串开始或结尾

Str.substr,其中start是必需的参数,表示坐标的起始位置。正值在正方向计数,负值在反方向计数,长度是可选参数,表示从起始位置开始计数的数字。...

JS获取当前时间

如果有更好的方法,请提出建议。进一步解释如下:varmyDate=newDate();我的日期。getYear();//获取当前年份(2位数)myDate getFullYear();//获取完整的年份(4位数,1970-???=0)||);}//----------------------------------------------//日期格式//格式...

js Base64与字符串互转

1、base64加密在页面中引入base64.js文件,调用方法为:˂!...