0

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

4

2 回答 2

1

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

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

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

另请查看将日志放在单独的驱动器上以传播 IO。

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

于 2014-03-05T19:26:00.977 回答
1

就像您说的那样,这在很大程度上是一个“取决于”的答案。我可能会稍微简化一些事情,但通常我会这样描绘过程:

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

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

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

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

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

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

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

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

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

于 2014-03-05T02:56:28.230 回答