不太了解 SQL Server 事务日志

Posted

技术标签:

【中文标题】不太了解 SQL Server 事务日志【英文标题】:Don't quite understand SQL Server transaction logs 【发布时间】:2011-08-22 23:00:07 【问题描述】:

我已经阅读了 SQL Server 事务日志,但仍然不完全了解如何使用/管理它们。我知道它们对于事务回滚、镜像、复制和日志传送等很重要。

对我来说,它们仍然像一个黑盒子,我对用它们做任何事情都不太舒服。是否有工具可以让我查看事务日志文件或获取有关它的信息?如果我不需要事务日志传送之类的东西,我可以定期缩小和/或截断我的日志文件吗?特别是在将备份恢复到测试实例的情况下——我真的需要一个占用空间的多 GB 日志文件吗?我还需要注意哪些其他功能特别依赖于事务日志并且如果我缩小/截断日志文件将无法使用?

【问题讨论】:

【参考方案1】:

作为一般规则,您不需要对事务日志“做”任何事情,除非确保它们不会变得太大。虽然可以使用日志挖掘工具从它们中读取,但这种情况很少见,并且在您对 DBA 角色的其他方面感到满意之前,不要担心它。

它们是一个黑匣子,它们可以正常工作。

您应该选择适合您业务需求的恢复模式。通常,这将涉及确定您是否需要时间点恢复,如果需要,则可能是“完全恢复模型”,否则为“简单恢复模型”。

如果您确实使用了完全恢复模式,那么您有时需要备份您的数据库(每天或每周和差异是这里的常见选项)并且您的事务日志每 15 分钟、几小时、几小时,具体取决于事务量、空间可用以及在最坏情况下您可以承受的最大数据丢失量。

如果您偶尔使用简单恢复备份您的数据库,但了解您无法进行时间点恢复。

在 Prod 中使用“完全恢复模型”,在开发和测试中使用“简单恢复模型”是很常见的。但是您必须确定自己的特定需求并自己做出决定。

“缩小”事务日志的最安全方法是管理您的备份,这样您就不必明确地这样做了。

阅读恢复模型并随时提出后续问题。

【讨论】:

在完全恢复模式下,在最后一次数据库备份之后发生的任何事务都会保留日志中的空间。当备份发生时,Sql Server 会释放该空间。它现在可供以后的交易使用,从而防止过度增长,而不是像这样“缩小”它。如果您不备份数据库和/或事务日志,则不会释放空间,从而导致事务日志增长。虽然可以缩减日志,但您的第一道防线应该是备份管理。

以上是关于不太了解 SQL Server 事务日志的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 了解日志缓存刷新

SQL Server 了解日志缓存刷新

SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志

SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志(译)

SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志

sql server 2012 事务日志在哪