SQL Anywhere では、あるトランザクションの操作が、同時に実行される他のトランザクションの操作で認識される程度を制御できます。この制御には、「独立性レベル」というデータベース・オプションを使用します。
また、対応するテーブル・ヒントを使用して、クエリ内の個々のテーブルの独立性レベルを制御することもできます。FROM 句を参照してください。
SQL Anywhere が提供するインタフェースを次に示します。
独立性レベル | 特性 |
---|---|
0 - コミットされない読み出し |
|
1 - コミットされた読み出し |
|
2 - 繰り返し可能読み出し |
|
3 - 直列化可能 |
|
snapshot 1 |
|
statement-snapshot1 |
|
readonly-statement-snapshot1 |
|
1 データベースで allow_snapshot_isolation が On に設定され、そのデータベースでスナップショット・アイソレーションが有効である必要があります。スナップショット・アイソレーションの有効化を参照してください。
デフォルトの独立性レベルは 0 です。ただし、Open Client、jConnect、TDS の各接続におけるデフォルトの独立性レベルは 1 です。
Mobile Link の独立性レベルの詳細については、Mobile Link 独立性レベルを参照してください。
ロックベースの独立性レベルは、一部またはすべての干渉を防ぎます。レベル 3 は最も高いレベルの独立性を提供します。2 以下のレベルでは、一貫性のレベルは低くなりますが、パフォーマンスは一般にレベル 3 より高くなります。デフォルトでは、レベルは 0 (コミットされない読み出し) に設定されています。
スナップショット・アイソレーションのレベルは、読み込みと書き込み間の干渉を防ぎます。書き込みは相互に干渉する可能性があります。一貫性のない動作が多少生じる可能性がありますが、競合のパフォーマンスは独立性レベルを 0 に設定した場合と同じです。ロー・バージョンを保存して使用する必要があるため、競合以外のパフォーマンスは低下します。
どの独立性レベルにおいても、各トランザクションが完全に実行されるかまったく実行されないこと、および更新内容が失われないことが保証されます。
独立性レベルはトランザクション間にのみあります。同じトランザクション内の複数のカーソルは相互に干渉する可能性があります。
スナップショット・アイソレーション
典型的な矛盾のケース
独立性レベルの設定
ODBC 実行可能アプリケーションからの独立性レベルの設定
独立性レベルの参照
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |