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中输入敕令:
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慢查询的输出日记花样为文件照样表,或许二者都有?
经由过程敕令:show variables like ‘%log_output%’;
经由过程log_output的值能够检察到输出的花样,上面的值为TABLE。固然,我们也能够设置输出的花样为文本,或许同时纪录文本和数据库表中,设置的敕令以下:
慢查询日记输出到表中(即mysql.slow_log)
set globallog_output=’TABLE’;
慢查询日记仅输出到文本中(即:slow_query_log_file指定的文件)
setglobal log_output=’FILE’;
在此我向人人引荐一个架构进修交换群。交换进修群号:478030634 内里会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码剖析,高并发、高机能、分布式、微效劳架构的道理,JVM机能优化、分布式架构等这些成为架构师必备的学问系统。还能领取免费的进修资本,现在受益很多
慢查询日记同时输出到文本和表中
setglobal log_output=’FILE,TABLE’;
关于慢查询日记的表中的数据个文本中的数据花样剖析:
慢查询的日记纪录myql.slow_log表中,花样以下:
慢查询的日记纪录到hostname.log文件中,花样以下:
能够看到,不管是表照样文件,都细致纪录了:是那条语句致使慢查询(sql_text),该慢查询语句的查询时刻(query_time),锁表时刻(Lock_time),以及扫描过的行数(rows_examined)等信息。
题目:怎样查询当前慢查询的语句的个数?
在MySQL中有一个变量特地纪录当前慢查询语句的个数:
输入敕令:show global status like ‘%slow%’;
(注重:上述一切敕令,假如都是经由过程MySQL的shell将参数设置进去,假如重启MySQL,一切设置好的参数将失效,假如想要永远的见效,须要将设置参数写入my.cnf文件中)。
补充学问点:怎样应用MySQL自带的慢查询日记剖析东西mysqldumpslow剖析日记?
perlmysqldumpslow –s c –t 10 slow-query.log
细致参数设置以下:
-s 示意按何种体式格局排序,c、t、l、r分别是根据纪录次数、时刻、查询时刻、返回的纪录数来排序,ac、at、al、ar,示意响应的倒叙;
-t 示意top的意义,背面随着的数据示意返回前面若干条;
-g 背面能够写正则表达式婚配,大小写不敏感。
上述中的参数寄义以下:
Count:414 语句涌现了414次;
Time=3.51s(1454) 实行最长时刻为3.51s,累计总消耗时刻1454s;
Lock=0.0s(0) 守候锁最长时刻为0s,累计守候锁消耗时刻为0s;
Rows=2194.9(9097604) 发送给客户端最多的行数为2194.9,累计发送给客户端的函数为90976404
(注重:mysqldumpslow脚本是用perl言语写的,细致mysqldumpslow的用法后期再讲)
题目:现实在进修过程当中,怎样得知设置的慢查询是有用的?
很简朴,我们能够手动发生一条慢查询语句,比方,假如我们的慢查询log_query_time的值设置为1,则我们能够实行以下语句:
selectsleep(1);
该条语句等于慢查询语句,以后,便能够在响应的日记输出文件或表中去检察是不是有该条语句。
以上就是MySQL通用查询日记和慢查询日记的简朴剖析的细致内容,更多请关注ki4网别的相干文章!