我有一个大型数据库(有上千万条记录),我将在该数据库上执行完整的数据库备份。
但是,数据库足够大,可以在备份之前和期间以及在备份发生期间和之后启动事务。
例如:
T0 = Transaction A start
T1 = Full database backup start
T2 = Transaction B start (will not deadlock with A)
T3 = Transaction A commit/rollback (does not matter, does it?)
T4 = Full database backup end
T5 = Transaction B commit/rollback (again, does not matter, does it?)
T0 T1 T2 T3 T4 T6
||----------||----------||----------||----------||----------||---------->
我的理解是,在备份过程中不使用任何锁(尽管由于诸如较高的I / O可能会导致其他性能问题),但是我不确定我可以保证将提交或不提交什么。
另外,我担心的不是数据库将处于不一致状态,而是该状态将是什么状态(即使不是确定性的,如果有一组可以一致地应用的规则)以及它如何到达那里(例如,有多少数据文件与事务日志一起用于创建备份文件)?