1、正在执行的sql语句
使用 show processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史记录,查看不到。好处是不用设置,不会保存。
跳转到 information_schema 表
-- 跳转到 information_schema 数据库 USE information_schema; -- 显示进程列表 SHOW PROCESSLIST;
或者:
SELECT * FROM information_schema.`PROCESSLIST` WHERE info IS NOT NULL;
2、开启日志模式
2.1、设置日志输出位置以及开启日志
-- log_output=’FILE’ 表示将日志存入文件,默认值是FILE -- log_output=’TABLE’表示将日志存入数据库,这样日志信息就会被写入到 mysql.slow_log 表中. -- 将日志写入表中 SET GLOBAL log_output = 'TABLE'; -- 开启日志 SET GLOBAL general_log = 'ON'; -- 关闭日志 SET GLOBAL general_log = 'OFF';
2.2、查询
注意:查询或刷新 mysql.general_log 表都会生成日志,查询时人为过滤一下。
SELECT * FROM mysql.general_log ORDER BY event_time DESC;
2.3、清空表
mysql.general_log 表不允许使用 DELETE 进行清空操作,否则出现以下报错,所以只能使用 TRUNCATE
DELETE FROM mysql.general_log; ------------------------------------------------------------ [SQL] DELETE FROM mysql.general_log; [Err] 1556 - You can't use locks with log tables.
-- 截断的表的名称或要删除其全部行的表的名称。 TRUNCATE TABLE mysql.general_log;
2.4、关闭日志
注意:在查询到所需要的记录之后,应尽快关闭日志模式,占用磁盘空间比较大
-- 将日志写入表中 SET GLOBAL log_output = 'TABLE'; -- 关闭日志 SET GLOBAL general_log = 'OFF';
2.5、查看与操作 mysql.general_log 相关参数
相关参数一共有3:general_log、log_output、general_log_file
-- 查看日志是否开启 SHOW VARIABLES LIKE 'general_log'; -- 开启日志功能 SET GLOBAL general_log='ON'; -- 关闭日志功能 SET GLOBAL general_log='OFF'; -- 看看日志文件保存位置 SHOW VARIABLES LIKE 'general_log_file'; -- 设置日志文件保存位置 C:\ProgramData\MySQL\MySQL Server 5.5\Data\DESKTOP-NUR8UC7.log SET GLOBAL general_log_file='C:\\tmp.log'; -- 看看日志输出类型 TABLE 或 FILE SHOW VARIABLES LIKE 'log_output'; -- 设置输出类型为 TABLE SET GLOBAL log_output='TABLE'; -- 设置输出类型为FILE SET GLOBAL log_output='FILE';
2.6、mysql.general_log 文件处理
当开启 mysql.general_log 后,mysql中的所有操作将会记录下来,这样 mysql.general_log 文件就会产生很大的文件,此时需要清空此文件来释放磁盘空间
2.6.1、错误操作
网上有人建议直接删除该文件,不重启系统也会自动生成,但是通过测试,系统不会自动生产该文件
如果删除掉,重启mysql以后,general_log出现异常。
2.6.2、正确的操作
清空该表,具体操作如下:
-- 关闭日志 SET GLOBAL general_log = 'OFF'; -- 将表 general_log 名称修改为表 general_log2 RENAME TABLE mysql.general_log TO mysql.general_log2; -- 清空 general_log2中的数据 DELETE FROM mysql.general_log2;
注意:当DELETE FROM mysql.general_log2执行删除表数据时,发现操作系统的数据文件还是存在的,需要手动删除该数据文件,再继续下面数据操作步骤
-- 优化 general_log2 表,重新利用未使用的空间,并整理数据文件的碎片 OPTIMIZE TABLE general_log2; -- 将 general_log2 的名称改回 general_log RENAME TABLE mysql.general_log2 TO mysql.general_log; -- 开启日志 SET GLOBAL general_log = 'ON';