Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー SQL の使用法 » トランザクションと独立性レベル » 独立性レベルと一貫性 » スナップショットアイソレーション

 

スナップショットアイソレーションの有効化

データベースのスナップショットアイソレーションは、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 にすることをおすすめします。

 参照