加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

关于MySQL通用查询日记和慢查询日记说明

发布时间:2018-10-14 23:25:51 所属栏目:编程 来源:框架淘金者
导读:【新产物上线啦】51CTO播客,随时随地,碎片化进修 MySQL中的日记包罗:错误日记、二进制日记、通用查询日记、慢查询日记等等。这里首要先容下较量常用的两个成果:通用查询日记和慢查询日记。 1)通用查询日记:记录成立的客户端毗连和执行的语句。 2)慢查
副问题[/!--empirenews.page--] 【新产物上线啦】51CTO播客,随时随地,碎片化进修

 关于MySQL通用查询日记和慢查询日记说明

MySQL中的日记包罗:错误日记、二进制日记、通用查询日记、慢查询日记等等。这里首要先容下较量常用的两个成果:通用查询日记和慢查询日记。

1)通用查询日记:记录成立的客户端毗连和执行的语句。

2)慢查询日记:记录全部执行时刻高出longquerytime秒的全部查询可能不行使索引的查询

(1)通用查询日记

在进修通用日记查询时,必要知道两个数据库中的常用呼吁:

  1. show variables like ‘%general%’; 

可以查察,当前的通用日记查询是否开启,假如general_log的值为ON则为开启,为OFF则为封锁(默认环境下是封锁的)。

  1. show variables like ‘%log_output%’; 

查察当前慢查询日记输出的名目,可所以FILE(存储在数数据库的数据文件中的hostname.log),也可所以TABLE(存储在数据库中的mysql.general_log)

题目:怎样开启MySQL通用查询日记,以及怎样配置要输出的通用日记输格外式呢?

开启通用日记查询: set global general_log=on;

封锁通用日记查询: set global general_log=off;

配置通用日记输出为表方法: set global log_output=’TABLE’;

配置通用日记输出为文件方法: set global log_output=’FILE’;

配置通用日记输出为表和文件方法:set global log_output=’FILE,TABLE’;

(留意:上述呼吁只对当前世效,当MySQL重启失效,假如要永世见效,必要设置 my.cnf)

my.cnf文件的设置如下:

general_log=1 #为1暗示开启通用日记查询,值为0暗示封锁通用日记查询

log_output=FILE,TABLE#配置通用日记的输格外式为文件和表

(2)慢查询日记

MySQL的慢查询日记是MySQL提供的一种日记记录,用来记录在MySQL中相应时刻高出阈值的语句,详细指运行时刻高出long_query_time值的SQL,则会被记录到慢查询日记中(日记可以写入文件可能数据库表,假如对机能要求高的话,提议写文件)。默认环境下,MySQL数据库是不开启慢查询日记的,long_query_time的默认值为10(即10秒,凡是配置为1秒),即运行10秒以上的语句是慢查询语句。

一样平常来说,慢查询产生在大表(好比:一个表的数据量有几百万),且查询前提的字段没有成立索引,此时,要匹配查询前提的字段会举办全表扫描,耗时查过long_query_time,

则为慢查询语句。

题目:怎样查察当前慢查询日记的开启环境?

在MySQL中输入呼吁:

  1. show variables like ‘%quer%’; 

首要把握以下的几个参数:

(1)slow_query_log的值为ON为开启慢查询日记,OFF则为封锁慢查询日记。

(2)slow_query_log_file 的值是记录的慢查询日记到文件中(留意:默认名为主机名.log,慢查询日记是否写入指定文件中,必要指定慢查询的输出日记名目为文件,相干呼吁为:show variables like ‘%log_output%’;去查察输出的名目)。

(3)long_query_time 指定了慢查询的阈值,即假如执行语句的时刻高出该阈值则为慢查询语句,默认值为10秒。

(4)log_queries_not_using_indexes 假如值配置为ON,则会记录全部没有操作索引的查询(留意:假如只是将log_queries_not_using_indexes配置为ON,而将slow_query_log配置为OFF,此时该配置也不会见效,即该配置见效的条件是slow_query_log的值配置为ON),一样平常在机能调优的时辰会暂且开启。

题目:配置MySQL慢查询的输出日记名目为文件照旧表,可能两者都有?

通过呼吁:

  1. show variables like ‘%log_output%’; 

通过log_output的值可以查察到输出的名目,上面的值为TABLE。虽然,我们也可以配置输出的名目为文本,可能同时记录文本和数据库表中,配置的呼吁如下:

#慢查询日记输出到表中(即mysql.slow_log)

  1. set globallog_output=’TABLE’; 

#慢查询日记仅输出到文本中(即:slow_query_log_file指定的文件)

  1. setglobal log_output=’FILE’; 

#慢查询日记同时输出到文本和表中

  1. setglobal log_output=’FILE,TABLE’; 

关于慢查询日记的表中的数据个文本中的数据名目说明:

慢查询的日记记录myql.slow_log表中,名目如下:

关于MySQL通用查询日记和慢查询日记说明

慢查询的日记记录到hostname.log文件中,名目如下:

关于MySQL通用查询日记和慢查询日记说明

可以看到,不管是表照旧文件,都详细记录了:是那条语句导致慢查询(sql_text),该慢查询语句的查询时刻(query_time),锁表时刻(Lock_time),以及扫描过的行数(rows_examined)等信息。

题目:怎样查询当前慢查询的语句的个数?

在MySQL中有一个变量专门记录当前慢查询语句的个数:

输入呼吁:

  1. show global status like ‘%slow%’; 

关于MySQL通用查询日记和慢查询日记说明

(留意:上述全部呼吁,假如都是通过MySQL的shell将参数配置进去,假如重启MySQL,全部配置好的参数将失效,假如想要永世的见效,必要将设置参数写入my.cnf文件中)。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读