cancel
Showing results for 
Search instead for 
Did you mean: 

【SQL Anywhere 11】「Unload」実行中の「排他ロック」について

Former Member
0 Kudos

SQLAnywhere11の「Unload」文について

いくつか確認と質問させて下さい。

①Unload実行中の「排他ロック」についてですが、

実行開始から終了までに「Update」など、

1トランザクションが実行された場合、

実行が終了するまで、ロックがかかるという認識ですが

合ってますでしょうか?

 例)「Unload」終了前の「Update」実行

 1.トランザクションの開始

 2.「Unload」実行

 3.「Update」実行

 4.「Unload」終了

 5.確定処理(Commit)

 上記の場合、 3.「Update」実行は、「Unload」の終了

 まで、「待機」する認識です。

②上記を踏まえた上で、「Unload」はどこまでのデータが

有効なのでしょうか?

 例)「Unload」実行前の「Update」実行

 1.トランザクションの開始

 2.「Update」実行

 3.「Unload」実行

 4.「Unload」終了

 5.確定処理(Commit)

 上記の場合、2.「Update」時の変更データはアンロードされるのでしょうか?

お手数ですが、ご回答の程宜しくお願いします。

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member186998
Contributor
0 Kudos

Unloadは通常の独立性レベルの下で、テーブル全体を排他ロックすることになります。(つまり、他のSQL文と同じ扱いで動作します)

①「1.トランザクションの開始」がBEGIN TRANである場合は「3.「Update」実行」でロックが発生するので、UpdateがUnloadの終了を待つことになり、Unload後に実行されたトランザクション(今回はUpdate)は、排他処理によりUnloadの完了まで待たされます。
②UnloadがUpdate(トランザクション)の終了を待ち、テーブル全体に排他ロックをかけてからUnloadを実行するので、Update時の変更データはアンロードされます。

Regards,

Atsushi Asano
Support Engineer
SAP Active Global Support