SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

インデックスの再構築時のロックの状態

leave a comment

日があいてしまいましたがインデックスの再構築時のロックの状態を見てみたいと思います。

– 再構築中のロックの取得 –

— ロックの取得状態をわかるようにトランザクションを開始
BEGIN TRAN

— インデックスの再構築の実施
ALTER INDEX [PK_Tbl1] ON [dbo].[Tbl1] REBUILD

— ロックの情報を取得
SELECT
??? DB_NAME(resource_database_id) AS [database_name],
??? RTRIM([resource_description]) AS [resource_description],
??? [resource_type],?
??? [resource_subtype],
??? [request_mode],
??? [request_type]
FROM
??? [sys].[dm_tran_locks]
WHERE
??? [request_session_id] = @@SPID

— トランザクションの終了
— 再構築はトランザクション処理可能ですのでロールバックできます。
ROLLBACK TRAN

?

– 結果 –

database_name resource_description resource_type resource_subtype request_mode request_type
WORK ? OBJECT ? IX LOCK
WORK ? DATABASE DDL S LOCK
WORK ? DATABASE ? S LOCK
WORK ? OBJECT ? IX LOCK
WORK ? OBJECT ? IX LOCK
WORK ? DATABASE ENCRYPTION_SCAN S LOCK
WORK (0000f26a94c1) KEY ? X LOCK
WORK ? OBJECT ? IX LOCK
WORK 1:55 PAGE ? X LOCK
~ 省略 ~ ? ? ? ? ?
WORK 1:118 PAGE ? X LOCK
WORK 1:119 PAGE ? X LOCK
WORK 1:114 PAGE ? X LOCK
WORK 1:115 PAGE ? X LOCK
WORK 1:115:4 RID ? X LOCK
WORK 1:115:5 RID ? X LOCK
WORK 1:127 PAGE ? X LOCK
WORK 1:115:6 RID ? X LOCK
WORK 1:115:7 RID ? X LOCK
WORK 1:115:0 RID ? X LOCK
WORK 1:115:1 RID ? X LOCK
WORK 1:115:2 RID ? X LOCK
WORK 1:115:3 RID ? X LOCK
WORK 1:120 PAGE ? X LOCK
WORK 1:151 PAGE ? X LOCK
WORK 1:148 PAGE ? X LOCK
~ 省略 ~ ? ? ? ? ?
WORK (0100274d67b6) KEY ? X LOCK
WORK (f200646e752e) KEY ? X LOCK
WORK (00005c180047) KEY ? X LOCK
WORK 1:464 EXTENT ? X LOCK
WORK 1:501 PAGE ? X LOCK
WORK 1:503 PAGE ? X LOCK
WORK 1:502 PAGE ? X LOCK
WORK (f100c9417efa) KEY ? X LOCK
WORK (0100e3362a07) KEY ? X LOCK

?

何行かは省略していますが、RID や、PAGE 単位でロックがかかっています。
再構築の場合はかなり細かい粒度でロックが取得されていますね。

RID が取得されている個所は混合エクステントだからかと思ったのですが、ページ ID 114 も混合エクステントのため、
PAGE と RID の取得の違いまではつかめていません…。

PFS の内容が [0x70 IAM_PG MIXED_EXT ALLOCATED] か [0x60 MIXED_EXT ALLOCATED] の違いはあるのですが。

再構成と再構築では処理が違いますので、ロックのかけ方が違うということは確認ができたのかなと思います。
再構成と違ってあっさりとした投稿になってしまいました…。

Share

Written by Masayuki.Ozawa

11月 17th, 2009 at 1:12 pm

Posted in SQL Server

Leave a Reply