Date: Tue, 30 Oct 2001 20:48:05 +0900
From: Kenji Tani <who@example.co.jp>
From: 新田 則之 <who@sub.example.jp>
Date: Tue, 30 Oct 2001 18:39:13 +0900
Message-ID: who@sub.example.jp
谷です。
> 実は、こちらに投稿する前に
> マイクロソフトのサポートニュースグループ(microsoft.private.jp.vap.sqlserver)
> に問い合わせてみたのですが、全く何も答えてもらえませんでしたので
非常に興味があったので、そちらに返信しようかな、とも思ったのですが。。
# 大概答えは返ってきませんから。。
> 「アーキテクチャ徹底解説 Microsoft SQL Server 2000」
> (原書:Inside Microsoft SQL Server 2000)
すでに発注はしているので、私も見てみます。
> 「トランザクション分離レベルを無効になるのは、分離レベル ヒントを指定したときで
> 粒度ヒントだけの指定では、トランザクション分離レベルは無効にはならない」
> と解釈していました。
トランザクション分離レベルのカスタマイズの項で、
「分離レベルは、必要に応じてそれぞれの SELECT ステートメントで
テーブル レベルのロック ヒントを指定することによって無効にできます。」
とあるので、新田さんの解釈で正しいようですね。
> 分離レベルが既定の「READ COMMITTED」で動作しているならば
> たとえ他セッションでテーブルが(TABLOCK, UPDLOCK)でロックされていても
> 「select * from [テーブル名] with (TABLOCK)」
> でテーブルを読み込めると思っていたのですが、そうではないのでしょうか?
解釈に自信が持てませんが、
トレースフラグを立て(3604,1200)、追跡してみました。
select * from authors with (TABLOCK, UPDLOCK)
Process 54 acquiring S lock on KEY: 5:1:2 (b80175ab6d20)
(class bit0 ref1) result: OK
Process 54 acquiring Schema lock on TAB: 5:1977058079 []
(class bit0 ref1) result: OK
Process 54 acquiring IS lock on PAG: 5:1:196
(class bit0 ref1) result: OK
-- KEY ロックの取得とリリース は削除しました。
Process 54 acquiring S lock on RID: 5:1:196:2
(class bit0 ref1) result: OK
Process 54 releasing lock on PAG: 5:1:196
Process 54 releasing lock on RID: 5:1:196:2
Process 54 releasing lock on KEY: 5:2:1 (20008a3e59ba)
Process 54 acquiring S lock on KEY: 5:2:1 (2100496d7491)
(class bit0 ref1) result: OK
Process 54 releasing lock on TAB: 5:1977058079 []
----
Process 54 acquiring S lock on TAB: 5:1977058079 []
(class bit0 ref1) result: OK
Process 54 acquiring X lock on TAB: 5:1977058079 []
(class bit2000000 ref1) result: OK
上記の2行(改行で4行)が、クエリ終了後だと思われます。
テーブルに排他ロックがかかっていますね。
# なぜだろう?
故に、SELECT 文が処理されている間なら、
別のセッションのSELECT文の処理が行えるかもしれないですね。
# wait for で同時実行したつもりでしたが、上手くいきませんでした。。
--
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 技術サポート情報一覧]
|