- PR -

SQL Server2005 「スナップショット分離レベル」について

1
投稿者投稿内容
rmmug
大ベテラン
会議室デビュー日: 2006/03/07
投稿数: 116
投稿日時: 2007-10-26 12:04
SQL Server 2005 Standard Edtion

あるテーブルを複数ユーザーで、更新、読み取りを行いますが、
更新時にロックが予想されるので、ロックがかかった場合でも
読み取りが出来るように、「スナップショット分離レベル」を
考えています。これが、本当に必要かどうか、また、使用方法について
確認させて下さい。

更新時に、「BEGIN TRAN」等のトランザクションは、使用して
いないのですが、それでもロックの発生が予想されるなら、
「スナップショット分離レベル」を使用した方がよいでしょうか。

また、ストアドを利用して更新、読み取りを行う予定です。
更新用のストアドの中に、
 ALTER DATABASE MyDB SET ALLOW_SNAPSHOT_ISOLATION ON
UPDATE 〜
読み取りのストアドの中に、
 SET TRANSACTION ISOLATION LEVEL SNAPSHOT
SELECT 〜
のように、コーディングを考えています。
更新の度、ALTER DATABASE〜
読み取りの度、SET TRANSACTION〜の実行が必要と思っている
のですが、それで、間違っていないでしょうか?

ALTER DATABASE〜により、DBの一時変更が行われたので、
更新用のストアドの最後に、DBの設定を戻す為のコマンドは、
必要でしょうか。

また、他に、何か注意することは、ありますか?
MSDNなどで調べはしたのですが、理解が???

[ メッセージ編集済み 編集者: fjdsskl 編集日時 2007-10-26 12:05 ]

[ メッセージ編集済み 編集者: fjdsskl 編集日時 2007-10-26 12:06 ]
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2007-10-26 12:54
ALTER DATABASEは毎回実行するようなものではないので一回実行すれば十分です。
トランザクション分離レベルは読み取り側で毎回SET TRANSACTION ISOLATION LEVEL SNAPSHOTを実行する必要があります。
コネクションプールなどを利用しアプリケーション全体で分離レベルがSNAPSHOTであると困る場合は最後に
SET TRANSACTION ISOLATION LEVEL READ COMMITED
などで元に戻しておく必要があります。

[ メッセージ編集済み 編集者: Anthyhime 編集日時 2007-10-26 12:56 ]
rmmug
大ベテラン
会議室デビュー日: 2006/03/07
投稿数: 116
投稿日時: 2007-10-26 22:18
Anthyhimeさん、有難うございます。
>ALTER DATABASEは毎回実行するようなものではないので一回実行すれば十分です。
すみません、一般的には、どのように実行すればよいですか?
ストアドでは、実行しないということですね。
SQL Server起動時?
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-10-27 00:28
引用:

fjdssklさんの書き込み (2007-10-26 12:04) より:
あるテーブルを複数ユーザーで、更新、読み取りを行いますが、
更新時にロックが予想されるので、ロックがかかった場合でも
読み取りが出来るように、「スナップショット分離レベル」を
考えています。これが、本当に必要かどうか、また、使用方法について
確認させて下さい。


こういう機能は使ったことはありませんが、これって結局は Oracle と同じことができますよ、というものですよね。
たとえて言えば、エスカレーターの左側に乗って、右側を開けるようなもので、総合的なパフォーマンスは低下すると思います。
個々のトランザクションにかかる時間を短くすれば、このような機能は要らないと思います。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2007-10-27 07:53
ManagementStudioとかで一回
ALTER DATABASE MyDB SET ALLOW_SNAPSHOT_ISOLATION ON
と入れてやれば、何回再起動しても、その状態は残り続けます。
rmmug
大ベテラン
会議室デビュー日: 2006/03/07
投稿数: 116
投稿日時: 2007-10-27 15:37
unibonさん、 Anthyhimeさん 有難うございます。
更新も短時間で済むと予想されるので、とりあえず、使用しないで
進め、問題が出てくれば、「スナップショット分離レベル」等の
利用を考えたいと思います。
感謝です。
1

スキルアップ/キャリアアップ(JOB@IT)