5

嗨,我正在使用 MySQL 5.5 版,有人可以帮我清除/刷新 mysql 中 mysql.slow_log 表中的数据吗?

4

4 回答 4

21

通过使用内置的旋转功能,您可以避免锁定问题而无需禁用慢日志:

CALL mysql.rds_rotate_slow_log;
DELETE FROM mysql.slow_log_backup;

这将交换 'slow_log' 和 'slow_log_backup' 表,将您要清除的所有数据移动到非锁定的 'slow_log_backup' 表中,该表将很乐意使用 DELETE FROM 进行数据清除。

您也可以只调用两次旋转:

CALL mysql.rds_rotate_slow_log;
CALL mysql.rds_rotate_slow_log;
于 2016-03-08T13:59:18.823 回答
13

TRUNCATE mysql.slow_log

来自 Mysql 文档:

TRUNCATE TABLE 是对日志表的有效操作。它可用于使日志条目过期。

于 2016-10-31T16:50:52.037 回答
6

如果你在 linux

> mysql -uroot -p
> enter your password
> use mysql;
> delete from slow_log;

它会给你一个错误,你不能锁定日志表。解决方法是,运行以下查询:

SET GLOBAL slow_log= 'OFF';
RENAME TABLE slow_log TO general_log_temp;
DELETE FROM `general_log_temp`;
RENAME TABLE general_log_temp TO slow_log ;
SET GLOBAL slow_log = 'ON';

取自“从 Mysql 常规日志表中删除旧行”

更新:

您可以像 TRUNCATE mysql.slow_logRenato Liibke 提到的那样截断表格

于 2015-03-20T09:48:11.320 回答
0

For me this works:

SET GLOBAL slow_query_log= 'OFF';
RENAME TABLE slow_log TO general_log_temp;
DELETE FROM `general_log_temp`;
RENAME TABLE general_log_temp TO slow_log ;
SET GLOBAL slow_query_log = 'ON';
于 2018-05-21T14:04:44.503 回答