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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データベースの作成 » トランザクションと独立性レベルの使用 » トランザクションのブロックとデッドロック » トランザクションのブロック

 

ブロック・オプション

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

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

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

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

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

ブロック・オプションの詳細については、blocking オプション [データベース]を参照してください。