Date: Wed, 31 Oct 2001 09:04:21 +0900
From: Kenji Tani <who@example.co.jp>
From: 新田 則之 <who@sub.example.jp>
Date: Tue, 30 Oct 2001 22:08:44 +0900
Message-ID: who@sub.example.jp
Subject: [ml-msde:00828] Re: ロックの動作(長文)
おはようございます。
谷です。
> > > 上記の2行(改行で4行)が、クエリ終了後だと思われます。
> > ちなみに、コミットはしていません。
> > コミットした場合は、現れませんでした。
> > 故に、SELECT 文が処理されている間なら、
> > 別のセッションのSELECT文の処理が行えるかもしれないですね。
>
> と言われていましたが、これは
>
> 「トランザクション開始後にSELECT文を処理した場合
> そのトランザクションが終了するまでは
> 別セッションのSELECT文の処理が行えるかもしれない」
はい。あくまでも仮説ですが。
私の入手したトレース結果から推測なのですが、
始めのセッションでは、読み取り中 S ロックが使用されていました。
読み取り終了後に、X ロックになっていると思われるので、
S ロックの間だけであれば、読み取り可能かな、と思いました。
(読み取り終了後かどうかに自信が持てませんが。)
# Books Online の UPDLOCK の記述とは食い違っています。
# 共有ロックの代わりに更新ロックを使用するはずなのですが。
ただ、テストとして
Begin
waitfor time 'hh:mm'
Begin tran
select * from authors with (tablock,updlock)
END
と
Begin
waitfor time 'hh:mm'
Begin tran
select * from authors with (tablock)
END
を同時刻指定として、上から順に実行した場合でも、
下のセッションは、ロックウエイトしておりました。
また、
select * from [テーブル名] with (ROWLOCK, UPDLOCK)
の動作では、
ROWLOCK 及び UPDLOCK がかかっているため、
別のセッションでの読み取りが可能でした。
> 最終的な目標は、上記の4の処理を無事完了させることなのですが…
お役に立てなくて申し訳ないと思います。
--
With best regards.
Kenji Tani
Otsuka Corp. Kansai Technical Solution Center
Phone: 06-6456-2640 Fax: 06-6456-2619
Email: who@example.co.jp
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|