如何在SQL数据库中使日志尽可能小?

时间:2009-02-02 20:48:52

标签: sql-server backup logging truncate

这个问题可能有点基础,但这里有:

我有一个带有4 GB日志文件的SQL Server数据库。数据库为16GB,每晚备份。

我是否可以定期截断日志,因为每晚都会备份整个DB + Log?

3 个答案:

答案 0 :(得分:2)

你可以在备份之前每晚运行维护计划。这将尝试将您的日志文件缩小/截断为1 meg

BACKUP LOG DBNAME
TO disk = 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\DBNAME.log'
DBCC SHRINKFILE('DBNAME_Log', 1)

答案 1 :(得分:1)

您确定每晚备份日志而不仅仅是数据库吗?

如果是这样,那么这个数据库做了什么?您是否正在删除并刷新整个表格?如果是这样,您的日志可能是您拥有的交易量的正确大小。您希望日志足够大,以便在不增长的情况下处理正常的事务负载。小日志可能会损害性能。

如果此数据库本质上不是事务性的(即,表是通过完全刷新而不是一次一个记录来填充的),则将恢复模式更改为简单。不要这样做,但是如果你有事务表,你需要能够从日志中恢复,而不是简单地重新导入数据。

答案 2 :(得分:0)

如果您可以在白天运行日志备份(取决于负载等,这可能也可能不适用),您可以通过这样做来控制日志文件。这将防止日志文件本身变得非常大,并且还提供了使您能够在出现问题时更接近故障点恢复的附带好处。

使用DBCC SHRINKFILE后,您仍需要缩小日志文件,但如果在该点之后定期备份,则不应该以较小的尺寸稳定。