1

次のように、2つのセッションがあり、それぞれが同じタスクを実行しますが、異なるテーブルで実行します

begin tran
 update...set...
commit tran
checkpoint

各更新は大きなバッチです。データベースは単純復旧モードになっています。t-log が大きくなりすぎないように、チェックポイントを発行して、t-log の切り捨てが行われるようにします。

私の質問は次のとおりです。セッション A がトランザクションをコミットし、セッション B がまだ更新中のときにチェックポイントを発行した場合、セッション A によるチェックポイント発行は、セッション B のアクティブなトランザクションのためにセッション B を待機しますか? 言い換えれば、チェックポイントはすべてのアクティブなトランザクションが終了するまで待たなければならないのでしょうか? 2 つのセッションがデッドロックを形成する可能性はどれくらいですか?

また、2 つのチェックポイント コマンドを同時に発行するとどうなりますか?

セッション A が table_A を更新し、セッション B が table_B を更新することに注意してください。いつでも同じテーブルを更新することはありません。

また、insert into、rename、drop を使用すると更新が高速になることもわかっています。しかし、私はそうしないことに制限されています。チェックポイントの同時実行性について知りたいだけです。

ありがとう、

4

2 に答える 2