事务日志中数据修改的日志记录:是只包含受影响的行和列的前后状态还是包含所有列(受影响的行)的前后状态,即日志记录包含整行还是仅包含被修改的行的一部分?
谢谢
编辑:我现在创建了一个实验,似乎表中的列数不会影响数据修改的事务日志的大小,即如果我col2
在表中更新,那么表是否有 5 列或100 列,事务日志的增长将是相同的。
事务日志中数据修改的日志记录:是只包含受影响的行和列的前后状态还是包含所有列(受影响的行)的前后状态,即日志记录包含整行还是仅包含被修改的行的一部分?
谢谢
编辑:我现在创建了一个实验,似乎表中的列数不会影响数据修改的事务日志的大小,即如果我col2
在表中更新,那么表是否有 5 列或100 列,事务日志的增长将是相同的。
扩展 Tibor Karaszi 在评论部分提到的许多其他因素。我写了一些演示代码,只显示了三个场景。您已经可以看到日志记录数量、长度和内容的差异。我确实在解释每个测试之间添加了评论。
描述列将让您对日志记录的内容有一个很好的了解。
如果您想查看
RowLog Contents X
列的内容,请参阅这篇文章。事务日志记录所有事务以及每个事务所做的数据库修改。更新未触及的列不计算在内。它记录页面更改。这是关于页面而不是记录。
没有previuos 页面版本。previuos 页面版本存储在完整的数据库备份中。然后应用 tlog 中的每个页面更改,您可以在完全恢复后滚动完成所有事务。
还记录回滚操作。每个事务都会在事务日志上保留空间,以确保存在足够的日志空间来支持由显式回滚语句或遇到错误导致的回滚。保留的空间量取决于事务中执行的操作,但通常等于用于记录每个操作的空间量。当事务完成时,该保留空间被释放。