スナップショット・アイソレーションを使用する場合、トランザクションがローの古いバージョンを認識し、更新または削除しようとすると、更新の競合が発生することがあります。このような状況では、競合が検出されるとサーバでエラーが発生します。コミットされた変更の場合、これは更新または削除が試みられた時になります。コミットされていない変更の場合、更新または削除はブロックされ、変更がコミットされるときにサーバがエラーを返します。
readonly-statement-snapshot を使用すると、更新可能な文は、スナップショット・アイソレーションではなく実行し、常に最新バージョンのデータベースを認識するため、更新の競合は発生しません。そのため、readonly-statement-snapshot 独立性レベルには、スナップショット・アイソレーションの多くの利点があり、元々別の独立性レベルで実行するように設計されたアプリケーションを大きく変更する必要はありません。readonly-statement-snapshot 独立性レベルを使用するときは、次のようになります。
読み込み専用文では、読み込みロックは取得されない。
読み込み専用文は、データベースのコミットされた状態を常に認識する。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |