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记录,在生产环境中很容易形成百万级别的数据,所以建议需要调试的时候打开,调试完记得关闭。
2022年05月22日 2:43 下午 沙发
assadasda