你好,我正在使用MySQL版本5.5,在MySQL中,有没有人能够帮我清除/刷新mysql.slow_log表中的数据?
你好,我正在使用MySQL版本5.5,在MySQL中,有没有人能够帮我清除/刷新mysql.slow_log表中的数据?
通过使用内置的rotate功能,您可以避免在不禁用慢日志的情况下出现锁定问题:
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
是在日志表上执行的有效操作。它可以用于过期日志条目。
> 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 General Log表中删除旧记录"
更新:
你可以像Renato Liibke提到的那样截断表,例如TRUNCATE mysql.slow_log
use mysql
选择 MySQL 数据库,然后有一个名为的表,您可以通过使用此查询进行验证 show tables like '%slow_log%'
。 - Danyal Sandeelo对我来说,这个可以工作:
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';