on 07-22-2014 11:15 AM
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」時の変更データはアンロードされるのでしょうか?
お手数ですが、ご回答の程宜しくお願いします。
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
84 | |
23 | |
11 | |
9 | |
8 | |
5 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.