Sql server 日志文件在更新每个数据库表字段后会有多大?

Sql server 日志文件在更新每个数据库表字段后会有多大?,sql-server,sql-server-2005,logfiles,Sql Server,Sql Server 2005,Logfiles,我的一般问题是,假设您有一个大小为20G的SQLServer2005数据库和一个空的日志文件。如果您运行一系列更新,每个表和每行只运行一次,日志文件是否会增长到与数据库相同的大小?还是取决于其他因素 我问这个问题是因为我正在执行数据库更新。我有一个专用软件使用的数据库。对每个表和每个字段进行更新。软件没有详细的输出,只有一个“未完成”/“完成”复选框。因为没有描述性的输出,我试图找出如何判断它是否接近结尾 那么,当所有内容都被触及时,日志文件是否可能与数据库大小相同?或者日志文件是否包含不依赖于

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

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


那么,当所有内容都被触及时,日志文件是否可能与数据库大小相同?或者日志文件是否包含不依赖于数据库大小的不同信息?根据经验,为任何更新生成的日志大小约为更新大小的1.5倍。因此,如果更新20Gb的数据,将生成30Gb的日志

但有一些事情需要考虑:

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

  • 某些操作可以最少记录。截短、插入块是典型的示例。最小日志记录只占正常日志记录的一小部分


  • 现在,您应该查看使用的日志百分比(
    dbccsqlperf(logspace)
    ),并监视是否有任何日志发生

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

    但有一些事情需要考虑:

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

  • 某些操作可以最少记录。截短、插入块是典型的示例。最小日志记录只占正常日志记录的一小部分


  • 现在,您应该查看使用的日志百分比(
    dbccsqlperf(logspace)
    ),并监视是否有任何日志发生

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

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

    您的恢复模式是什么?简单?满了吗?批量记录。除此之外,您是批量更新,例如1000条记录还是“一次全部更新”。你不想对这么多的记录“一次完成”简单。事务直到最后才提交,因此我的理解是,在提交之前,它实际上与“Full”的大小相同。不幸的是(对我来说)它在软件中是自动化的,所以我无法控制那个部分。你的恢复模式是什么?简单?满了吗?批量记录。除此之外,您是批量更新,例如1000条记录还是“一次全部更新”。你不想对这么多的记录“一次完成”简单。事务直到最后才提交,因此我的理解是,在提交之前,它实际上与“Full”的大小相同。不幸的是(对我来说)它在软件中是自动化的,所以我无法控制这一部分。这是一些伟大的见解,帮助我更好地掌握情况。谢谢你的参考链接。这个链接是针对SQL 2000的,但是仍然非常准确,非常详细:这是一些非常好的见解,帮助我更好地掌握情况。感谢您提供参考链接。此链接适用于SQL 2000,但大部分内容仍然准确且非常详细: