了解MySQL服务器过去执行的SQL查询对于数据库管理至关重要。查看这些记录可以帮助我们:
* 确定服务器上的活动模式
* 优化查询以提高性能
* 跟踪用户活动和权限
* 诊断数据库问题
使用SHOW FULL PROCESSLIST命令
最直接的方式是使用 SHOW FULL PROCESSLIST 命令。该命令将显示当前正在服务器上执行的所有线程,包括它们正在执行的SQL查询:
sql
SHOW FULL PROCESSLIST;
这个命令会列出以下信息:
* **ID:**线程的ID
* **USER:**执行查询的用户
* **HOST:**用户连接的主机
* **DB:**查询正在执行的数据库
* **COMMAND:**正在执行的命令
* **TIME:**查询执行的时间(以秒为单位)
* **STATE:**查询的当前状态
* **INFO:**有关查询的其他信息,例如正在查询的表
查看查询日志
MySQL还提供了一个查询日志,用于记录所有执行的查询。默认情况下,此日志未启用。要启用它,请设置 general_log 系统变量:
sql
SET GLOBAL general_log = ON;
启用查询日志后,所有查询都将写入日志文件。可以通过以下方式查看日志文件:
less /var/log/mysql/mysql.log
使用性能模式
Performance Schema是一个高级监控和分析框架,提供了有关数据库活动的深入见解。它允许我们查看过去执行的查询,包括:
* 查询的文本
* 执行时间
* 耗用的资源
* 调用堆栈
要启用性能模式,请使用以下命令:
sql
SET GLOBAL performance_schema = ON;
启用性能模式后,可以使用以下查询查看过去的查询:
sql
SELECT * FROM performance_schema.events_statements_history
ORDER BY event_time DESC;
通过使用 SHOW FULL PROCESSLIST 命令、查看查询日志或使用性能模式,我们可以查看MySQL服务器曾经执行的SQL记录。这些信息对于优化数据库性能、跟踪用户活动和诊断数据库问题至关重要。