データベースのスナップショットアイソレーションは、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 にすることをおすすめします。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |