1

我的一般问题是,假设您有一个 20G 大小的 SQL Server 2005 数据库和一个空的日志文件。如果您运行一系列更新,每个表和每一行都只发生一次,日志文件会增长到与数据库相同的大小吗?还是这取决于其他因素?

我问这个问题是因为我正在执行数据库更新。我有一些专有软件使用的数据库。对每个表和每个字段进行更新。该软件没有详细的输出,只有一个“未完成”/“完成”复选框。因为没有描述性的输出,我试图弄清楚如何判断它是否接近尾声。

那么,当所有内容都被触及时,日志文件是否可能与数据库大小相同?或者日志文件是否包含以这种方式不依赖于数据库大小的不同信息?

4

2 回答 2

5

根据经验,为任何更新生成的日志大小约为更新大小的 1.5 倍。因此,如果您更新 20Gb 的数据,就会生成 30Gb 的日志。

但是有一些事情需要考虑:

  1. 生成的日志大小不一定要转换为日志文件大小。在简单恢复模式下,一旦事务提交,使用的日志文件可以自动回收(为简洁起见,我省略了一些细节),因此通过不断回收使用的日志,30gb 的日志大小可以放入 1gb 的文件中。在 FULL 和 BULK 恢复模式下,当执行数据库日志备份时,日志会被类似地回收。因此,如果您不在一个事务中更新所有内容,则您的日志应该循环使用并且不会增长。

  2. 某些操作可以最少记录。TRUNCATE、INSERT BULK 是典型的例子。最小日志记录只占正常日志记录的一小部分。

现在,您应该查看已使用的日志百分比 ( DBCC SQLPERF(logspace)) 并监控是否发生了任何日志增长事件

于 2011-02-18T21:30:49.377 回答
0

不是您要寻找的答案,但我认为它不太可能以任何有意义的方式与数据库的大小相关。就等着吧。:)

于 2011-02-18T21:32:04.930 回答