当对Temporal Table执行 DML 和 DDL 查询时,这些更改会适当地传播到相关的 History 表。例如UPDATE
,临时表会导致将新记录INSERT
编辑到历史表中以反映该更改。
是INSERT
记录在事务日志中的历史表以及其他传播的更改吗?
这是否意味着启用临时表将有效地使通过事务日志的数据量翻倍(至少对于恢复模型设置为完整的数据库)?
当对Temporal Table执行 DML 和 DDL 查询时,这些更改会适当地传播到相关的 History 表。例如UPDATE
,临时表会导致将新记录INSERT
编辑到历史表中以反映该更改。
是INSERT
记录在事务日志中的历史表以及其他传播的更改吗?
这是否意味着启用临时表将有效地使通过事务日志的数据量翻倍(至少对于恢复模型设置为完整的数据库)?
是的,对历史表的更改会被记录下来。
如果您考虑事务日志的目的,它是为了允许恢复(通过备份和恢复,或在数据库启动时发生的正常恢复过程)。如果没有记录对历史表的更改,则使用临时表恢复数据库的备份可能会导致主表和历史表之间的不一致。
这是一个小演示。该设置创建一个临时表,插入一行,更新该行,然后清除日志。
现在,如果我更新表中的一行,然后对日志运行相同的查询:
这 6 条新的日志记录是:
如果我更改
CREATE TABLE
语句以删除系统版本控制相关项,然后重新运行演示,日志的最终状态如下所示:它不会完全翻倍(插入主表不会对历史表进行任何更改),但是肯定会增加日志吞吐量。