Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
各種の独立性レベルは、それぞれ適するタスクが異なります。以下の情報を参考にして、特定のオペレーションに最も合うレベルを判断してください。
データのブラウズや入力を伴うトランザクションは、終了するのに何分もかかり、相当数のローを読み込みます。独立性レベルが 2 または 3 の場合、同時実行性が犠牲になります。この種のトランザクションには、レベル 0 または 1 が使われます。
たとえば、データベースから大量のデータを読み込んで統計的にまとめる作業を行う意思決定支援アプリケーションは、後で修正されるローを多少読み込んでも大きな影響は受けません。このようなアプリケーションに上位レベルの独立性を要求すると、大量のデータに読み込みロックをかけてしまい、他のアプリケーションが書き込みアクセスできなくなります。
独立性レベル 1 は、カーソルとともに使用すると便利です。この 2 つを組み合わせると、ロック要件をそれほど増大せずにカーソルの安定性を保てます。SQL Anywhere は、カーソルの現在ローにかけられた読み込みロックを早期に解放してこれを達成します。読み込みロックは、レベル 2 や 3 では繰り返し可能読み出しを保証するためにトランザクションが終了するまで維持する必要があります。
たとえば、カーソルを使用して在庫レベルを更新するトランザクションには独立性レベル 1 が適しています。なぜなら、品目の入荷や販売があるたびに在庫レベルを調整した内容が失われることがなく、このように頻繁に調整しても、他のトランザクションへの影響が最小限で済むからです。
独立性レベル 2 では、条件を満たすローは他のトランザクションが変更することはできません。このレベルは、ローを複数回読み込み、最初の結果セットに含まれるローが変更されないことを保証する必要があるときに使用します。
比較的多数の読み込みロックが必要となるため、この独立性レベルの使用には注意を要します。レベル 3 のトランザクションと同様に、データベースとインデックスを慎重に設計することで、ロック数も減り、データベースのパフォーマンスを向上させることができます。
独立性レベル 3 はセキュリティを最も重んじるトランザクションに適しています。幻ローを防ぐと、新しいローがオペレーションの途中で追加されて結果が壊される心配をせずに、マルチステップオペレーションを実行できます。
独立性レベル 3 がいかに高度の整合性を提供するとしても、同時に多数のトランザクションの実行をサポートする必要がある大きなシステムでは使用を控える必要があります。SQL Anywhere はこのレベルでは他のレベルよりも多くのロックを設定するため、1 つのトランザクションが他の多くのトランザクションの処理を妨げる可能性があります。