MySQL提供的一种日志记录——慢日志查询

  

慢日志查询

MySQL的慢日志查询是MySQL提供的一种日志记录,它用了记录在MySQL中响应时间超过阈值的语句,具体运行时间超过long_query_time值的SQL,则会被记录到慢日志中.long_query_time的默认时间为10,意思是运行10以上的语句。

比如一条SQL执行超过5秒钟,我们就算慢SQL, MySQL会记录超过5秒的SQL,我们可以结合解释进行全面分析。

默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。当然,如果不是调优需要,一般不建议启动该参数,因为慢日志会或多或少带来一定的性能影响。

是否开启以及设置
#查看是否开启
显示变量如& # 39;% slow_query_log % & # 39;;
#开启
集全球slow_query_log=1;

 MySQL提供的一种日志记录——慢日志查询

使用集全球slow_query_log=1开启了慢查询日志只对当前数据库生效,如果MySQL重启后则会失效。如果要永久生效,就必须修改配置文。

件my . cnf中所做注意设置慢查询阈值时间后,你可能看不到值发生了变化,即没有生效,这时需要重新连接或新开一个会话才能看到修改值。
显示变量如& # 39;% long_query_time % & # 39;

或者不重开连接也可以使用下面的命令:
显示变量如& # 39;% long_query_time % & # 39;

哪些SQL会被慢日志记录,这是由参数long_query_time控制,默认情况下long_query_time的值为10秒,命令:
显示变量如& # 39;% long_query_time % & # 39;;

假如运行时间正好等于long_query_time的情况,并不会被记录下来。也就是说,在MySQL是判断大于long_query_time,而非大于等于。

查看慢日志条数

显示全球状态像& # 39;% slow_queries % & # 39;

日志分析工具mysqldumpslow
在生产环境中,如果要手工分析日志,查找,分析SQL,显然是个体力活,MySQL提供了日志分析工具mysqldumpslow。

例如:
#得到返回记录集最多的10个SQL
mysqldumpslow - s r - t 10 D: \ \ DESKTOP-VN2D5OU-slow MySQL程序文件\ \数据。日志
#得到访问次数最多的10个SQL
Mysqldumpslow c - s - t 10 D: \ \ DESKTOP-VN2D5OU-slow mysql程序文件\ \数据。日志
#得到按照时间排序的前10条里面含有左连接的查询
Mysqldumpslow - s t - t 10 g“左加入“D: \ \ DESKTOP-VN2D5OU-slow mysql程序文件\ \数据。日志
#另外建议在使用这些命令时结合|和更多的使用,否则可能出现爆破情况
Mysqldumpslow - s r - t 10 D: \ \ DESKTOP-VN2D5OU-slow mysql程序文件\ \数据。日志|更多

参数含义
s:表示按照何种方式排序
c:访问次数
l:锁定时间
r:返回记录
t:查询时间
艾尔:平均锁定时间
t:返回前面多少条的数据
g:后面搭配一个正则表达式

用显示配置文件进行sql分析
显示配置文件命令可以分析当前会话中语句执行的资源消耗情况。用于查找sql耗时瓶颈。默认处于关闭状态,并保存最近15次的运行结果。

查看是否开启(显示变量如“剖析”;)
开启功能(设置分析=;)

开启之后就可以记录接下来sql的运行情况。之后通过显示配置文件来查看结果:

进一步通过命令(显示cpu,阻塞io查询3;)分析某个sql语句执行情况,例如下面分析3号sql的情况。

显示配置文件后面的一些参数:

:显示所有的开销信息

块io:显示块io相关开销

上下文切换:上下文切换相关开销

cpu:显示cpu相关开销

记忆:显示内存相关开销

来源:显示和source_function, source_file, source_line相关的开销信息

全局查询日志
(永远不要在生产环境开启,查看所有执行的sql语句)
设置命令:
集全球general_log=1;
#以表的形式输出
设置全球log_output=氨怼?/p>

此后,mysql所执行的sql语句将会记录到mysql。genearl_log表,可用下面的命令查看:
select * from mysql.general_log;
也可以在配置文件中配置,设置如下:
#开启
General_log=1
#记录日志文件的路径
General_log_file=D://道路/日志文件
#输出格式
Log_output=文件

  

MySQL提供的一种日志记录——慢日志查询