SQL Server 的数据库日志动不动就占好几个 G,真不是开玩笑的。如果你也遇到过磁盘快炸、性能卡顿这些问题,清理一下日志文件真的是个挺实用的办法。
日志文件主要包括事务日志、错误日志和安全日志这三块。事务日志最关键,所有你增删改的数据操作都会被它记下来。要是数据库出了问题,还得靠它恢复。
想手动清理也不难,用几行 SQL 就能搞定。比如清理hrtest
数据库日志的脚本是这样的:
ALTER DATABASE hrtest SET RECOVERY SIMPLE WITH NO_WAIT;
ALTER DATABASE hrtest SET RECOVERY SIMPLE;
DBCC SHRINKFILE(N'hr_log', 0, TRUNCATEONLY);
ALTER DATABASE hrtest SET RECOVERY FULL WITH NO_WAIT;
ALTER DATABASE hrtest SET RECOVERY FULL;
这套流程蛮适合应急,执行完后日志就会瘦身不少。但你要是懒得老去执行,可以搞个自动清理,用 SQL Server 的维护计划功能设置一下清理频率和时间,图省心的选手可以考虑下。
不过有一点你得注意,清日志虽好,但不能乱搞,别在生产高峰期执行,容易影响性能。还有恢复模式的切换一定记得切回去,不续的日志就不会完整记录了。
如果你日志越来越大、不清就顶不住,强烈建议你定期清一下,顺便压缩压缩,或者调整一下数据库的增长策略。要真出问题了,比如日志损坏,那就不是几行代码能救的事了。
如果你对 SQL 日志操作还不熟,可以看看这些扩展资源,有讲事务恢复的、有聊日志机制的,挺全:
如果你也在用 SQL Server,不妨抽空把日志文件梳理一遍。清理一下,说不定磁盘呼吸都顺畅了。