您现在的位置是:亿华云 > IT科技类资讯
数据库MySQL一般查询日志或者慢查询日志历史数据的清理
亿华云2025-10-09 15:13:19【IT科技类资讯】0人已围观
简介general log&slow query log对于MySQL的一般查询日志和慢查询日志,开启比较简单,其中公用的一个参数是log_output,log_output控制着慢查询和一般查询
general log&slow query log
对于MySQL的数据数据一般查询日志和慢查询日志,开启比较简单,般查其中公用的询日一个参数是log_output,log_output控制着慢查询和一般查询日志的志或者慢输出方向可以是表(mysql.general_log,mysql.slow_log)或者文件(有参数general_log_file和slow_query_log_file配置决定)或者同时输出到表和文件(想不明白,什么时候需要同时输出到表和文件)。查询
但是日志两者受log_output参数影响,输出的历史理目标总是一致的,也就是数据数据要么都写入表,或者要么都写入文件,般查不会一个输出到表,询日一个输出到文件。志或者慢
--slow log 相关参数 select * from performance_schema.global_variables where variable_name in (slow_query_log,查询log_output,slow_query_log_file,long_query_time) --general log 相关参数 select * from performance_schema.global_variables where variable_name in (general_log,log_output,general_log_file)对于上述两种日志,系统默认不会清理,日志因此在开启了相关日志之后,历史理需要人为清理。数据数据
如何清理历史general log&slow query log
1,当输出目标为表的时候
无法直接删除,如果直接删除的话,会出现“ERROR 1556 (HY000): You can’t use locks with log tables.”的错误提示
以general log为例,需要先关闭general_log,然后重命名general_log这个表,高防服务器
在对重命名之后的表执行删除,最后在重命名回来,最后开启general_log(如果有必要的话)
SET GLOBAL general_log = OFF; RENAME TABLE general_log TO general_log_temp; DELETE FROM general_log_temp WHERE event_time < DATE(NOW()); RENAME TABLE general_log_temp TO general_log; SET GLOBAL general_log = ON; --slow log 同理 SET GLOBAL slow_query_log = OFF; RENAME TABLE slow_log TO slow_log_temp; DELETE FROM slow_log_temp WHERE start_time < DATE(NOW()); RENAME TABLE slow_log_temp TO slow_log; SET GLOBAL slow_query_log = ON;如果对重命名之后的表(general_log或者是slow_log)没有再次重命名回来,会发生什么?
参加如下截图,如果没有找到对应的表(general_log或者是slow_log),在输出目标为表的情况下,会提示无法找到对应的表,将无法开启对应的日志
2,当输出目标为文件的时候
当输出目标为文件的时候,在linux下,直接使用rm命名删除即可,如果在开启了一般查询日志或者是慢查询日志,删除对应的日志文件,并不影响数据库的正常使用。网上有说需要停止MySQL服务然后重命名文件然后在创建新的文件啥的,在Linux下并不是必须的b2b供应网,不知道在windows下是什么情况,没兴趣试。
当然也不是说就建议始终这种暴力的方式清理日志文件,在Linux下,删除了默认的日志文件(或者重命名了原日志文件),要想再次生成日志文件
可以使用mysqladmin flush-logs 是SQL命令flush slow logs;flush general logs; 重启MySQL服务均可重新生成对应的日志文件。
注意:当对应的文件是存在的时候,上述命名执行之后是没有影响的(也不会清理对应的日志文件)
以下偏离主题
当输出目标为表的时候的解析
不管是general_log或者是slow_log,对应的SQL语句都是二进制格式的,需要使用convert(sql_text using UTF8)做一个转换,才变得具有可读性。
当输出目标为表的时候对性能的香港云服务器影响
据个人测试,在请求量不大的数据库上,开启general_log或者是slow_log,对性能影响并没有非常明显。理论家们一方面强调说MySQL的处理并发上多强悍,一方面又说开启general_log对性能影响很大,会不会自相矛盾呢?关于general_log,在zabbix监控下,测试环境TPS不过百的情况下(每秒写入general log不超过100条数据),开启general_log之后并CPU负载几乎没有变化,CPU高点是在做其他压力测试。尤其是slow_log这种写入不是太频繁的日志,直接写入到表中,对性能的影响有限,比后面再去花时间解析文件……
当然不排除TPS在上千或者上万甚至更高之后,开启general_log会产生较大的影响,当然没事也不会闲的蛋疼去开general_log。
很赞哦!(4778)
相关文章
- 比较短的域名方便用户记忆和传播,它带来的好处往往会超过其他类型的域名,如果你非要域名短而且还要包含关键词,那么往往会事与愿违,现在这种域名基本上是可遇而不可求的。
- 2015年240个数据库引擎排名参考
- 27个精美的时间线(含源代码),你知道几个?
- 公司发声明了!禁止所有程序员使用 Lombok !再使用绩效直接打C!
- 域后缀首选.com,.net,然后是.cn。后缀选择不当,导致流量损失。域名是企业与互联网网址之间的链接,关键是企业在网络上存在的标志。因此,选择好域名是开展网上工作的首要重要条件。
- 十种程序语言帮你读懂大数据的“秘密”
- 探寻微博背后的大数据原理:推荐算法
- 详细图解Netty Reactor启动全流程
- 4、企业无形资产:通用网站已成为企业网络知识产权的重要组成部分,属于企业的无形资产,也有助于提升企业的品牌形象和技术领先形象。它是企业品牌资产不可或缺的一部分。
- SQLServer:《SQL必知必会》一书的读书笔记(一)