Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー SQL の使用法 » トランザクションと独立性レベル » トランザクションのブロックとデッドロック » トランザクションのブロック

 

ブロックオプション

2 つのトランザクションが、ある 1 つのローに対してそれぞれ読み込みロックをかけている場合、一方がローを変更しようとしたときにどうなるかは、データベースのブロックオプションの設定によって異なります。ローを修正するトランザクションは、他方のトランザクションをブロックしなければなりませんが、他方のトランザクションにブロックされている間はそれができません。

  • ブロックオプションが On (デフォルト) の場合、書き込みをしようとするトランザクションは、もう一方のトランザクションが読み込みロックを解放するまで待機します。解放されると、書き込みが実行されます。

  • ブロックオプションが Off の場合、書き込みをしようとする文はエラーを受け取ります。

ブロックオプションが Off の場合、文は待機せず終了し、行った部分的な変更はロールバックされます。この場合は、あとでもう一度トランザクションの実行を試みます。

ブロックは、独立性レベルが高くなると起こりやすくなります。ロックもチェックの回数も独立性とともに増えるからです。独立性レベルが高いと、通常は同時実行性が低下します。低下の度合いは、同時に実行するトランザクションによって異なります。

 参照