2014-03-04 249 views
0

我有一个关于SQL日志文件大小以及在日志文件备份后应该设置什么的问题。我知道这取决于很多因素,并且没有正确或错误的数量(相对而言,因为我不会在默认情况下在1 MB处开始记录),但是应该有多少VLF应该存在如果我们做了大约200MB的事务(或者我们的.mdf文件增长了那么多),那么这个VLF有多大或者日志文件有多大?我已经阅读了Kimberly Tripp和Paul Randal的博客,但最好还是有雾。SQL 2005日志文件初始大小

+0

备份前有多大? – Paparazzi

+0

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

回答

1

就像你说的那样,这是一个'取决于'的答案。我可能会过分简化一些事情,但通常我会像这样描绘过程:

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

  • 所以日志至少需要是最大的交易 日志大小的尺寸。

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

  • 另一个考虑因素是使用强度。检查点发生之前累积多少数据。这是当日志数据以批处理方式写入到mdf文件时。

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

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

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

而且,当你自动增长时,确保它的体积正在增长。还要记住,每个vlf都需要先被清零。在可以使用之前,文件需要完全填充零。当你指定非常大的数据块(比如说1 GB)时,这个数据库上的每个查询都将排队,直到完成零输出过程。

当我对日志需求毫无头绪时,我个人从500 MB大小开始,自动增长100 MB块。从那里开始,我监控汽车增长事件并根据需要进行调整。

+0

当涉及到日志文件时,是否有任何'最佳实践'? Msft是否有任何建议值?我只是在这里问,因为我读过的书和Msft网站并不总是为这些模糊的猜测类型的问题提供最好的。 – ctmcklowe96

1

历史通常是未来规模的最佳预测指标。
它在备份之间的日志通常会达到20 GB,然后您可以预计它会在备份之间达到20 GB。

如果你的尺寸为20GB,那么它不一定会增长。

如果日志必须增长20倍甚至100倍,那么不是那么大的一笔交易。
如果日志必须增长1000倍,那么您肯定应该将其大小设置错误。
一个1 mb的日志,一次只能增长1 MB,达到1000 MB是不好的。
一个100 mb增长100%只需增长4倍达到1600 mb。
还有最大尺寸。
恢复模式对日志大小有巨大的影响。
还有很多要考虑的比初始大小。

另外看看把日志放在一个单独的驱动器来传播IO。

看看把温度放在一个单独的驱动器来传播IO。