【发布时间】:2015-05-23 16:31:47
【问题描述】:
您好,我正在使用 MySQL 5.5 版,有人可以帮我清除/刷新 mysql 中 mysql.slow_log 表中的数据吗?
【问题讨论】:
-
见this
标签: mysql mysql-workbench mysql-slow-query-log
您好,我正在使用 MySQL 5.5 版,有人可以帮我清除/刷新 mysql 中 mysql.slow_log 表中的数据吗?
【问题讨论】:
标签: mysql mysql-workbench mysql-slow-query-log
您可以通过使用内置的旋转功能,在不禁用慢日志的情况下避免锁定问题:
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;
【讨论】:
TRUNCATE mysql.slow_log
来自 Mysql 文档:
TRUNCATE TABLE 是对日志表的有效操作。它可用于使日志条目过期。
【讨论】:
如果你在 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';
取自"DELETE old rows from Mysql General Log Table"
更新:
您可以像这样截断表格
TRUNCATE mysql.slow_log Renato Liibke 提到的
【讨论】:
use mysql选择mysql数据库,并且有一个带有名称的表,您可以在选择mysql数据库后使用此查询show tables like '%slow_log%'进行验证
对我来说这是可行的:
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';
【讨论】: