首页 > 数据库 >MySQL 通用查询日志与慢查询日志

MySQL 通用查询日志与慢查询日志

时间:2022-10-25 17:07:43浏览次数:54  
标签:通用 log 查询 MySQL query 日志

MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。

1)通用查询日志:记录建立的客户端连接和执行的语句。
2)慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询

​通用查询日志

show variables like '%version%';

MySQL 通用查询日志与慢查询日志_查询语句

上述命令,显示当前数据库中与版本号相关的东西。

​show variables like '%general%';

MySQL 通用查询日志与慢查询日志_慢查询_02

可以查看,当前的通用日志查询是否开启,如果general_log的值为ON则为开启,为OFF则为关闭(默认情况下是关闭的)。

​show variables like '%general%';

查看当前通用日志输出的格式,可以是FILE(存储在数数据库的数据文件中的hostname.log),也可以是TABLE(存储在数据库中的mysql.general_log)

show variables like '%log_output%';


MySQL 通用查询日志与慢查询日志_mysql_03

​如何开启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)

慢查询日志

MySQL的慢查询日志是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中(日志可以写入文件或者数据库表,如果对性能要求高的话,建议写文件)。默认情况下,MySQL数据库是不开启慢查询日志的,long_query_time的默认值为10(即10秒,通常设置为1秒),即运行10秒以上的语句是慢查询语句。
一般来说,慢查询发生在大表(比如:一个表的数据量有几百万),且查询条件的字段没有建立索引,此时,要匹配查询条件的字段会进行全表扫描,耗时查过long_query_time,
则为慢查询语句。
问题:如何查看当前慢查询日志的开启情况?
在MySQL中输入命令:

show variables like '%quer%';


MySQL 通用查询日志与慢查询日志_mysql_04

主要掌握以下的几个参数:
(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),一般在性能调优的时候会暂时开启。

设置 slow_query_log_file输出位置

set slow_query_log_file = '路径.log';

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

输入命令:show global status like ‘%slow%’;

这样Mysql的一些简单日志命令就学习结束了,缺乏机器练手的小伙伴可以去 cnaaa 看一看!

标签:通用,log,查询,MySQL,query,日志
From: https://blog.51cto.com/u_15753891/5794943

相关文章

  • mysql数据导出
    #导出数据到本地文件mysqldump-uroot-p我的密码-T/data/test1010qgdatacompany_lawsuit--fields-terminated-by='|'--lines-terminated-by='\n'-p我的密码#密......
  • 多表查询-子查询的情况
    子查询不同情况1.子查询的结果是单行单列的:子查询可以作为条件,使用运算符去判断。运算符∶>>=<<==--查询员工工资小于平均工资的人SELECT*FROMempWHEREe......
  • django跨表查询
    https://blog.csdn.net/moshanghuali/article/details/103849558一.基于对象的跨表查询方式,常用的是符号.基于对象的跨表查询也分正向查询和反向查询。由主表查从表就......
  • 多表查询-外链接、子查询概述
    多表查询-外链接1、左外链接:语法:select字段列表from表1left[outer]join表2on条件;查询的是左表所有数据以及其交集部分。例子:--查询所有员工信息......
  • mysql修改用户开放ip权限
    远程连接不上mysql有很多原因:服务器防火墙,mysql默认绑定本地ip,访问用户默认绑定本地ip防火墙的原因需要配置策略或者关闭mysql绑定本地ip需要配置mysql用户的需要修改用......
  • Mysql rank排名函数
    https://www.jianshu.com/p/776151cbba03https://blog.csdn.net/m0_60196931/article/details/125214918......
  • mysql08--索引管理
    一、索引理论ps:数据都是存在于硬盘上的,查询数据不可避免的需要进行IO操作#索引:就是一种数据结构,类似于书的目录。意味着以后在查询数据的应该先找目录再找数据,而......
  • 多表查询-概述、内链接
    多表查询概述多表查询分类:1、内链接查询2、外链接查询 3、子查询课外知识点:笛卡尔积:有两个集合A,B.取这两个集合的所有组成情况要完成多表查询,需要消除无用的数据......
  • Linux 环境使用yum安装mysql8
    下载并安装Mysqlwget-i-chttps://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm下载后,执行安装yum-yinstallmysql80-community-release-el7-3......
  • 测试开发mysql性能调优总结(一)
    测试开发mysql性能调优总结mysql在创建表的时候,对每个字段选择合适的数据类型很重要!根据个人的经验总结:整数类型选择INT小数类型选择DECIMAL字符串类型选择TEXT日期......