猎人文案网-美好文案都值得收藏

猎人文案网-美好文案都值得收藏

如何查看mysql执行过的语句?

59

要查看MySQL执行过的语句,可以通过以下几种方法实现,具体选择取决于需求(实时查看、历史查询等):

一、查看慢查询日志

配置慢查询日志

在MySQL配置文件(如`my.cnf`或`my.ini`)中添加以下配置:

```ini

slow_query_log = 1

slow_query_log_file = /var/log/mysql/slow-query.log

long_query_time = 1 记录执行时间超过1秒的SQL

```

重启MySQL服务使配置生效。

查看慢查询日志内容

使用以下命令查看日志文件:

```sql

SHOW VARIABLES LIKE 'slow_query_log';

SHOW VARIABLES LIKE 'slow_query_log_file';

```

或直接查看日志文件(如`cat /var/log/mysql/slow-query.log`)。

二、查看二进制日志(Binary Log)

配置二进制日志

在配置文件中添加:

```ini

server-id = 1

log_bin = /var/log/mysql/mysql-bin.log

```

重启MySQL服务。

查询已执行的删除语句

使用以下SQL语句:

```sql

SELECT * FROM mysql-bin.000001; -- 替换为实际的时间戳文件

```

该表记录所有修改数据的操作,包括删除语句。

三、使用系统变量查询历史语句

查询当前事务

通过`information_schema.INNODB_TRX`表:

```sql

SELECT * FROM information_schema.INNODB_TRX;

```

可查看当前正在执行的事务及相关SQL语句。

查询锁信息

使用:

```sql

SELECT * FROM information_schema.INNODB_LOCKS;

SELECT * FROM information_schema.INNODB_LOCK_WAITS;

```

了解锁等待情况。

四、使用MySQL客户端命令历史

查看客户端命令历史

执行:

```sql

SHOW VARIABLES LIKE 'auto_rehash';

SHOW VARIABLES LIKE 'auto_vertical-output';

```

然后查询`mysql.client_command`表:

```sql

SELECT * FROM mysql.client_command;

```

该表记录客户端执行的历史命令。

注意事项

权限问题:

部分日志文件(如二进制日志)可能需要特定权限才能查看,建议使用`sudo`或以`root`用户操作。

性能影响:开启实时日志记录(如`general_log = 1`)会消耗系统资源,建议仅在排查问题时临时启用。

历史数据量:命令日志和查询日志可能占用大量磁盘空间,长期开启需谨慎。

通过以上方法,可以灵活地查看MySQL执行过的语句,满足不同场景的需求。