SQLServer2012表IAM存储结构探究(四)

2014-11-24 12:15:27 · 作者: · 浏览: 3

页指针(十进制)

01003d8b 0000

0100 3f8b0000

0100488b 0000

0100 498b0000

01004a8b 0000

0100 4b8b0000

01004c8b 0000

0100 4d8b0000

1 35645

1 35647

1 35656

1 35657

1 35658

1 35659

1 35660

1 35661

Table6的每一个IAM Page第2个SLOT,去除前4个字节,接下来是每BIT都是一个代表1个Extend(8个连续的Page)是否被本数据对象使用:

1:被本对象占用,

0:没有被本对象占用

下面列出Table6 中的每一个IAM 第2个SLOT 部分关键数据

第一个IAM

dbcc traceon(3604)

dbcc page('A',1,35646,1)

0000000000000000: 0000381f 00000000 0000000000000000 00000000

……

0000000000000230: 00fcffff ffffffff ffffffffffffffff ffffffff

……

0000000000001F2C: ffffffff ffffffff ffffffff

FE: 1111 1100

((231H-4)*8-2)*8=35664

如图蓝色框部分

\

第二个IAM

dbcc traceon(3604)

dbcc page('A',1,35662,1)

0000000000000000: 0000381f feffffff ffffffffffffffff ffffffff

……

0000000000001F2C: ffffffff ffffffff ffffffff

FE: 1111 1110

((1F2CH+12-4)*8+1)*8=511240

如图蓝色框部分

\

第三个IAM

dbcc traceon(3604)

dbcc page('A',1,35663,1)

0000000000000000: 0000381f feffffff ffffffffffffffff ffffffff

……

0000000000001F2C: ffffffff ffffffff ffffffff

FE: 1111 1110

((1F2CH+12-4+1FC2H+12-4)*8+1)*8=1022472

如图蓝色框部分

\

第四个IAM

dbcc traceon(3604)

dbcc page('A',1,1533712,1)

0000000000000000: 0000381f faffffff ffffffffffffffff ffffffff

…….

00000000000005B4: ffffffff ffffffff ffffffff ffffff0000000000

FE: 1111 1010

((1F2CH+12-4+1FC2H+12-4+1F2CH+12-4)*8+1)*8=1533704

如图第一个蓝色框部分,低位第2个"1" BIT,代表了第二个篮框

\

某条记

然后通过DBCCPAGE 可以得到了真正的数据记录,例如最后一条记录

dbcc traceon(3604)

dbcc page('A',1,1627839,1)

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

PAGE: (1:1627839)

BUFFER:

BUF @0x000000046F48EC40

bpage = 0x000000045C6FC000 bhash = 0x0000000000000000 bpageno = (1:1627839)

bdbid = 7 breferences = 0 bcputicks = 70

bsampleCount = 1 bUse1 = 32444 bstat = 0x9

blog = 0x15ab215a bnext = 0x0000000000000000

PAGE HEADER:

Page @0x000000045C6FC000

m_pageId = (1:1627839) m_headerVersion = 1 m_type = 1

m_typeFlagBits = 0x0 m_level = 0 m_flagBits = 0x8200

m_objId (AllocUnitId.idObj) = 98 m_indexId (AllocUnitId.idInd) = 256

Metadata: AllocUnitId = 72057594044350464

Metadata: PartitionId = 72057594040025088 Metadata: IndexId = 0

Metadata: ObjectId = 1541580530 m_prevPage = (0:0) m_nextPage = (0:0)

pminlen = 8012 m_slotCnt = 1 m_freeCnt = 79

m_freeData = 8111 m_reservedCnt = 0 m_lsn = (2320:17330:8)

m_xactReserved = 0 m_xdesId = (0:0) m_ghostRecCnt = 0

m_tornBits = 194973556 DB Frag ID = 1

Allocation Status

GAM (1:1533696) = ALLOCATED SGAM (1:1533697) = NOT ALLOCATED

PFS (1:1625688) = 0x44 ALLOCATED 100_PCT_FULL DIFF (1:1533702) = CHANGED

ML (1:1533703) = NOT MIN_LOGGED

DATA:

Slot 0, Offset 0x60, Length 8015, DumpStyle BYTE

Record Type = PRIMARY_RECORD Record Attributes = NULL_BITMAP Record Size = 8015

Memory Dump @0x000000001214A060

0000000000000000: 10004c1f 944a1800 63636363 63636363 63636363 ..L..J..cccccccccccc

0000000000000014: 63636363 63636363 63636363 63636363 63636363 cccccccccccccccccccc

0000000000000028: 63636363 63636363 63636363 63636363 63636363 cccccccccccccccccccc

000000000000003C: 63636363 63636363 63636363 63636363 63636363 cccccccccccccccccccc

0000000000000050: 63636363 63636363 63636363 63636363 63636363 cccccccccccccccccccc

0000000000000064: 63636363 63636363 63636363 63636363 63636363 cccccccccccccccccccc

……

0000000000001F04: 63636363 63636363 63636363 63636363 63636363 cccccccccccccccccccc

0000000000001F18: 63636363 63636363 63636363 63636363 63636363 cccccccccccccccccccc

0000000000001F2C