MySQL数据库启用慢查询记录所有执行的SQL语句

摘要

MySQL数据库支持记录所有执行的SQL语句,以供在开发调试过程中使用。生产环境下的数据库,有时候为了跟踪BUG和记录问题,也需要启用此功能。

MySQL数据库支持记录所有执行的SQL语句,以供在开发调试过程中使用。生产环境下的数据库,有时候为了跟踪BUG和记录问题,也需要启用此功能。

记录所有执行的SQL语句,MySQL提供两种方案:日志记录和慢查询,其中日志记录可以还可以通过SQL语句控制是否启用的状态。

1、通过配置文件启用查询记录

编辑配置文件:

vi /etc/my.cnf

在mysql的配置文件中[mysqld]中增加如下记录:

general_log = 1
general_log_file = /var/lib/mysql/iZbp18qasm44xlfcjuuy76Z.log

需要重启MySQL服务,在CentOS和Ubuntu上的命令有所不同,一般的命令为:

service mysqld restart

2、通过配置文件启用慢查询

MySQL还提供记录查询慢的SQL记录,也是需要修改配置文件

cat /etc/my.cnf

在mysql的配置文件中[mysqld]中增加如下记录:

slow_query_log = on
slow-query-log-file = /var/lib/mysql/slowquery.log
long_query_time = 2

保存配置后,也需要重启MySQL服务,具体命令参考以上的配置。5.7版本与以前的版本,字段名称不一致,这里配置为5.7版本的。

3、通过SQL语句启用和关闭查询记录

这种方案的好处在于不需要重启MySQL服务,在控制台直接通过SQL语句控制即可。

首先查看日志功能是否打开

show variables where Variable_name="general_log";

若查询结构为OFF,代表没有打开,执行以下SQL语句

set global general_log=on;

执行完毕后,再次查询状态,已经为ON。

如何查看记录的SQL语句呢?在日志文件中查看。

日志文件在哪里呢?通过以下SQL语句查询:

show variables where Variable_name="general_log_file";

调试完毕后,执行以下SQL语句关闭查询日志记录。

set global general_log=off;

关于记录所有SQL语句的小结


跟Oracle和SQL Server这些专业级的数据库相比,MySQL虽然在巨量数据的处理能力方面两者,当时作为免费开源而著称的软件,对于百万级别的数据量的处理,其实MySQL更有优势。

以上的日志记录和慢查询功能虽然强大,但是浪费资源,而且因为是对执行过程做的记录,包括的连接数据服务,切换数据库,查询表结构,断开连接等操作,都是单条SQL记录,在生产环境中很容易形成百万级别的数据,所以建议需要调试的时候打开,调试完记得关闭。

admin

目前评论:1   其中:访客  0   博主  0

  1. avatar APP体验员D 3

    assadasda

评论加载中...

发表评论: 使用手机百度APP扫描左侧二维码, 或者微信扫描右侧太阳码