我有 2 个会话,每个会话执行相同的任务但在不同的表上,如下
begin tran
update...set...
commit tran
checkpoint
每次更新都是一个大批量。数据库处于简单恢复模式。为了避免 t-log 变得太大,我们发出检查点,以便 t-log 截断可能发生。
我的问题是:如果会话 A 提交事务并在会话 B 仍在更新过程中时发出检查点,会话 A 发出的检查点是否会由于会话 B 的活动事务而等待会话 B?换句话说,检查点是否必须等待所有活动事务完成?两个会话形成僵局的可能性有多大?
另外,如果同时发出两个检查点命令会发生什么?
请注意,会话 A 更新 table_A,会话 B 更新 table_B。他们永远不会在任何给定时间更新同一张表。
我也知道使用 insert into、rename、drop 可以实现更快的更新。但我仅限于不这样做。我只想了解检查点并发。
谢谢,