独立性レベルの選択は、アプリケーションが実行するタスクの種類によって異なります。この項では、選択のガイドラインを示します。
適切な独立性レベルを選択するには、一貫性と正当性のニーズと、同時に実行するトランザクションが妨げられずに処理を行うためのニーズのバランスを取る必要があります。トランザクションが 1 つのテーブルで 1 つまたは 2 つの特定の値しか使用しない場合は、数多くの大きなテーブルを検索したり、多くのローまたはテーブル全体をロックしたりするような、処理に非常に時間がかかるプロセスに比べると、トランザクションが妨げられる可能性はかなり少なくなります。
たとえば、トランザクションで銀行口座間の資金移動を行う場合、確実に正確な情報が返されるようにする必要があるでしょう。ただし、休止中の口座の割合の概算を計算する場合は、そのトランザクションが他のトランザクションを待つかどうかを配慮しません。また、データベースの他のユーザを妨げないようにするために、多少の精度を犠牲にします。
さらに、金銭の振り込みは、2 つの口座の残高を含む 2 つのローだけに影響するのに対して、概算を計算するためにはすべての口座を読み込む必要があります。このため、金銭の振り込みによって他のトランザクションを遅らせる可能性は少なくなります。
SQL Anywhere では、0、1、2、3 の 4 つの独立性レベルがあります。レベル 3 は完全な独立性を提供し、トランザクションはスケジュールが直列化可能となる方法でインターリーブされます。
データベースでスナップショットアイソレーションを有効にした場合は、さらに snapshot、statement-snapshot、readonly-statement-snapshot という 3 つの独立性レベルが利用可能になります。
直列化可能なスケジュール
各種独立性レベルでの典型的なトランザクション
独立性レベル 2 と 3 での同時実行性の改善
ロックの影響を削減するヒント
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |