在大容量导入中按最小方式记录日志的前提条件

对于完整恢复模式下的数据库,大容量导入执行的所有行插入操作都会完整地记录在事务日志中。如果使用完整恢复模式,大型数据导入会导致填充事务日志的速度很快。相反,对于简单恢复模式大容量日志恢复模式,大容量导入操作的按最小方式记录日志减少了大容量导入操作填满日志空间的可能性。另外,按最小方式记录日志的效率也比按完整方式记录日志高。

注意注意

大容量日志恢复模式旨在于大容量操作期间临时替换完整的恢复模式。有关在完整恢复模式和大容量日志恢复模式之间切换的信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项

在大容量导入操作中按最小方式记录日志的表要求

按最小方式记录日志要求目标表满足下列条件:

  • 当前没有复制表。

  • 指定了表锁定(使用 TABLOCK)。

    有关详细信息,请参阅控制大容量导入的锁定行为

    注意注意

    尽管在按最小方式记录日志的大容量导入操作过程中,数据插入操作没有记录在事务日志中,但每当为表分配新区时,数据库引擎仍会记录区分配信息。

对于某个表,是否按最小方式记录日志还取决于该表是否有索引,如果有,则还取决于该表是否为空:

  • 如果表没有索引,则按最小方式记录数据页。

  • 如果表没有聚集索引但是有一个或多个非聚集索引,则始终按最小方式记录数据页。但是,记录索引页的方式取决于该表是否为空:

    • 如果该表为空,则按最小方式记录索引页。

    • 如果该表不为空,则按完整方式记录索引页。

      注意注意

      如果您以空表开始并分多批大容量导入数据,则对于第一批,将按最小方式记录索引页和数据页,但从第二批开始,将只按最小方式记录数据页。

  • 如果表有聚集索引且为空,则按最小方式记录数据页和索引页。相反,如果表有聚集索引且不为空,则无论采用何种恢复模式,均按完整方式记录数据页和索引页。

    注意注意

    如果您以空表开始并分批大容量导入数据,对于第一批,将按最小方式记录索引页和数据页,但从第二批开始,将只按大容量方式记录数据页。

有关详细信息(包括大容量导入过程中的表锁定和日志记录行为的摘要),请参阅优化大容量导入性能

注意注意

启用事务复制时,将完全记录 BULK INSERT 操作,即使处于大容量日志恢复模式下。

**最佳方法:**当使用大容量日志恢复导入一组大型表行时,请考虑将大容量导入分成多批。每批相当于一个事务。这样,完成一批后,就可以备份其日志。下一次日志备份将回收用于大容量导入行批的日志空间。