MSDE FunClub
Microsoft Data Engine FunClub
MSDE技術者向けメーリングリスト過去ログ[824]番
 
[TOP]>[MSDE技術者向けメーリングリスト過去ログ(824番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
Re: ロックの動作(長文)

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 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。