データベースのスナップショット・アイソレーションは、allow_snapshot_isolation オプションを使用して有効または無効にします。オプションを On にすると、ロー・バージョンがテンポラリ・ファイル内で管理され、接続で任意のスナップショット・アイソレーションのレベルを使用できます。オプションを Off にすると、スナップショット・アイソレーションを使用しようとすると、エラーが発生します。
データベースがスナップショット・アイソレーションを使用できるようにすると、パフォーマンスに影響を与える可能性があります。これは、スナップショット・アイソレーションを使用するトランザクションの数に関係なく、修正されたすべてのローのコピーを保持する必要があるからです。カーソルの感知性と独立性レベルを参照してください。
次の文は、データベースのスナップショット・アイソレーションを有効にします。
SET OPTION PUBLIC.allow_snapshot_isolation = 'On'; |
allow_snapshot_isolation オプションの設定は、ユーザがデータベースに接続している場合でも変更できます。このオプションの設定を Off から On に変更した場合、新しいトランザクションがスナップショット・アイソレーションを使用するには、現在のすべてのトランザクションが完了する必要があります。このオプションの設定を On から Off に変更した場合、データベース・サーバがロー・バージョン情報の管理を停止するには、スナップショット・アイソレーションを使用するすべての未処理のトランザクションが完了する必要があります。
特定のデータベースについて現在のスナップショット・アイソレーションの設定を確認するには、SnapshotIsolationState データベース・プロパティの値を問い合わせます。
SELECT DB_PROPERTY ( 'SnapshotIsolationState' ); |
SnapshotIsolationState プロパティの値は、次のいずれかです。
On データベースでスナップショット・アイソレーションが有効になっている。
Off データベースでスナップショット・アイソレーションが無効になっている。
in_transition_to_on 現在のトランザクションの完了後にスナップショット・アイソレーションが有効となる。
in_transition_to_off 現在のトランザクションの完了後にスナップショット・アイソレーションが無効となる。
スナップショット・アイソレーションがデータベースで有効になると、スナップショットが使用されていない場合でも、トランザクションがコミットまたはロールバックしないかぎり、ロー・バージョンはトランザクションで管理される必要があります。そのため、スナップショット・アイソレーションを使用しない場合は、allow_snapshot_isolation オプションを Off にすることをおすすめします。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |