【问题标题】:SQL 2005 Log File Initial SizeSQL 2005 日志文件初始大小
【发布时间】:2014-03-04 22:06:41
【问题描述】:

我有一个关于 SQL 日志文件大小以及日志文件备份后应该设置的问题。我知道这取决于很多因素,并且没有正确或错误的数量(相对而言,因为我不会像默认设置那样以 1 mb 开始日志),但是应该有多少 VLF 在如果我们做了大约 200 mb 的事务(或者我们的 .mdf 文件增长了那么多),那么这些 VLF 会有多大或日志文件有多大?我已经阅读了 Kimberly Tripp 和 Paul Randal 的博客,但充其量仍然是模糊不清的。

【问题讨论】:

  • 备份前有多大?
  • 我应该先说我们日志的初始大小为 20g,但备份软件 (Veeam) 会截断。我不知道这种类型的截断是否是我们应该做的,因为它可能会或可能不会正确处理 VLF。也许 Veeam 和 SQL Server(首选 2005)用户可以帮助回答这个问题。

标签: sql sql-server tsql sql-server-2005 transaction-log


【解决方案1】:

就像你说的,这在很大程度上是一个“视情况而定”的答案。我可能会稍微简化一些事情,但通常我会这样描绘过程:

在将“stuff”写入数据文件之前,首先将每个事务写入日志。 日志永远不会被清除。当日志文件“翻转”时,写指针移回文件顶部并继续再次写入旧内容。

  • 所以日志至少需要是最大事务的大小 日志大小。

  • 接下来要考虑的是并发用户的数量。当你 有 10 个用户同时进行最大的交易,你明白了。

  • 另一个考虑因素是使用强度。在检查点发生之前累积了多少数据。这是将日志数据以类似批处理的方式写入 mdf 文件的情况。

  • 最后要考虑的是您的恢复模式。完全康复 模式,日志文件中尚未被“保护”的部分 事务日志备份,不能翻转,并且会继续增长,直到进行事务日志备份。

每个数据库只需要一个物理日志文件。 Sql server 一次只能写入一个文件。

您希望拥有尽可能少的虚拟日志文件。为日志文件提供足够的初始空间以从那里开始并从那里开始尽可能减少自动增长。 VLF 是由自动增长过程创建的。

当您自动增长时,请确保它以合适的块增长。还要记住,每个 vlf 都需要先归零。该文件需要完全用零填充才能使用。当您指定非常大的块(例如 1 GB 左右)时,此数据库上“战斗中”的每个查询都将排队,直到清零过程完成。

当我对日志需求一无所知时,我个人从 500 MB 大小开始,自动增长 100 MB 块。从那里我监控自动增长事件并在需要的地方进行调整。

【讨论】:

  • 关于日志文件是否有任何“最佳实践”? Msft 有什么建议的值吗?我只在这里问,因为我读过的书和 Msft 网站并不总是为这类模糊、猜测类型的问题提供最好的解决方案。
【解决方案2】:

历史通常是您预测未来规模的最佳指标。
如果日志通常在备份之间达到 20 GB,那么您可以期望它在备份之间达到 20 GB。

如果您的大小为 20 GB,那么它不太可能需要增长。

如果日志必须增长 20 甚至 100 倍,那没什么大不了的。
如果日志必须增长 1000 倍,那么您肯定应该错误地调整它的大小。
1 mb 的日志一次只增长 1 mb 并达到 1000 mb 是不好的。
增长 100% 的 100 mb 只需增长 4 倍即可达到 1600 mb。
还有一个最大尺寸。
恢复模式对日志大小有巨大影响。
除了初始大小之外,还有很多需要考虑的因素。

还要考虑将日志放在单独的驱动器上以传播 IO。

考虑将 temp 放在单独的驱动器上以传播 IO。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多