一.概述、
”流光容易把人抛,红了樱桃,绿了芭蕉“
转眼又年中了,感叹生命的有限,知识的无限。在后续讨论索引之前,先来了解下索引和表数据的内部结构,这一节将介绍页的存储,页分配单元类型,区的存储,
最后简要介绍下系统页存储类型,页中的数据结构。
1.1 页存储
页是 sql server存储数据的基本单位,大小为8kb,
它存储的类型包括表,索引数据,分配位图,可用空间信息等,页也是可以读写的最小I/0单位。也就是如只需访问一行数据,也会把整个页加载到内存中。一页大小是8192个字节,由三块组成分为页头,数据行 ,
行偏移也叫页尾行指针。
页头:有96个字节,包含的信息如PageID(文件号及页面编号),NextPage下一个页面的文件号及页面编号等。
数据行:单个数据行最大为8060字节。
末尾行偏移:
36字节的数组,数组中的每一个值指向页中数据。当插入一行数据时,偏移量从右下角开始存储,插入第二行时偏移量为2存放于1的左边,如下图所示:
一个页存储有三种分配单元类型: in_row_data
(行内数据), row_overflow_data( 行溢出数据), lob_data
LOB(大型数据)。
分配单元类型 | 描述 |
in_row_data | 存放固定长度的列,以及可变长度的列。一行字节<= 8060字节的限制 |
row_overflow_data | 存放<=8000字节的varchar,nvarchar, varbinary类型数据。一行字节>= 8060 |
lob_data | 存放大型对象数据类型值 >=8000节字的varchar(max), nvarchar(max), varbinary(max), 以及xml或clr udt |
1.2 区
区是由8个物理上连续的页组成的单元,用来有效管理页,如是区内的8个页属于同一个表,则这种区叫统一区,如果区内8个页分别属于至少两个不同的表,则这种区叫混合区。当表或索引需要更多空间时,sqlserver会为对象分配一个新区,但对象不足64kb,通常只分配一个页,当drop或truncate表时将释放整个区。
1.3 存储的关系
每个数据表对应有一个objectID标识符,
表中有多个索引为 sys.indexes, 表和索引存储在多个分区中
sys.partitions,但至少有一个分区。每个分区下面有8个物理连续页,
页中使用最频繁的文件类型是Data数据。
下图展示表和索引存储结构以及对应的元数据查询。 分配单元可通过SELECT
* FROM sys.system_internals_allocation_units视图查看
二. 索引与表存储关系演示
2.1
首先建一个RowText表
CREATE TABLE [dbo].[RowText](
[a] [varchar](3000) NULL
) ON [PRIMARY]
2.2 根据表名,查到表的标识符objectID: 5575058。
这里显示了表的相关信息如创建时间,修改时间。
select * from sys.objects where name='RowText'
2.3
根据标识符objectID,找到表上的多个分区,这里只有一个区。找到标识hobt_id(是该区里堆或B树结构的标识):
72057594038976512
select * from sys.partitions where object_id=5575058
2.4 再根据hobt_id: 72057594038976512,找到页分配的单元,
这里现只显示了in_row_data 行内数据,信息包括了行内数据使用的总页数,已使用页数,数据页数
select * from sys.allocation_units where container_id=72057594038976512
三. 页分配单元演示
3.1 上面讲到页分配单元有三种类型,通过下面的脚本可以来查看分析。
SELECT CONVERT(VARCHAR(10),OBJECT_NAME(i.object_id)) AS table_name,
i.Name AS index_name,i.index_id,i.type_desc AS index_type,
partition_id,partition_number,p.rows,allocation_unit_id,
a.type_desc AS page_type_desc,
a.total_pages,a.used_pages,a.data_pages
FROM sys.indexes i JOIN sys.partitions p
ON i.object_id=p.object_id and i.index_id=p.index_id
JOIN sys.allocation_units a ON p.partition_id=a.container_id
WHERE i.object_id=object_id('RowText')
3.2 查看页存储的行内数据
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[RowText]') AND type in (N'U'))
DROP TABLE [dbo].[RowText]
go
CREATE TABLE [dbo].[RowText](
[a] [varchar](3000) NULL
) ON [PRIMARY]
insert into RowText
select REPLICATE('a',3000)
insert into RowText
select REPLICATE('a',3000)
insert into RowText
select REPLICATE('a',3000)
当前一行数据3000字节,小于一行8000字节,所以存放为IN_ROW_DATA类型,新增三行共9000字节,大于了一页8060字节,所以产生了data_pages:2页。通过3.1脚本查看
3.2 查看页存储的行溢出数据
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[RowText]') AND type in (N'U'))
DROP TABLE [dbo].[RowText]
go
create TABLE [dbo].[RowText](
[a] [varchar](3000) NULL,
[b] [varchar](6000) NULL
) ON [PRIMARY]
insert into RowText
select REPLICATE('a',3000),REPLICATE('b',6000)
当前一行数据为9000字节,大于一行8000字节,所以分配了ROW_OVERFLOW_DATA类型,通过3.1脚本查看
3.3 查看页存储的LOB大型数据
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[RowText]') AND type in (N'U'))
DROP TABLE [dbo].[RowText]
go
CREATE TABLE [dbo].[RowText](
[a] [varchar](3000) NULL,
[b] [varchar](6000) NULL,
[c] [text] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
insert into RowText
select REPLICATE('a',3000),REPLICATE('b',6000),REPLICATE('c',12000)
当前表包含了text类型,所以分配了LOB_DATA大型数据,通过3.1脚本查看
最后简单总结下:在设计表字段时,一定要与业务相符合,尽量避免建大型字段,产生行溢出和LOB大型数据,从而造成页拆分,查询将需要跨页。原理是当一行超过8060字节时,这类型的值将被移动到一个称为行溢出分配单元页中,在原始页上保留一个24字节指针,指向行外数据,这样就完成了行跨页。
存放大型对象数据类型值时,在原始页上保留一个16字节指针,指向该大型对象值。
四 页单元文件类型
我们知道页文件主要是用来存储表和索引的数据,其实还包括其它的存储,
在sqlserver里页文件存储的类型也分9种,如下图所示
页类型 |
内容 |
Global Allocation Map (GAM) |
它用来标识相应的区是否已经被分区,能标识64000个区,也就是4G空间,如超过4G则分配另一个GAM页 bit=0 表示当前区已被数据使用 |
.Shared Global Allocation Map(SGAM) |
表示该区是否是混合区 bit=1 是混合区且至少有一个数据页被分配 |
Page Free Space |
存储该文件里所有页分配情况,和可用空间信息 |
Index Allocation Map |
表或索引使用该区的信息 |
Bulk Changed Map |
最后一条 backup log 语句之后大容量操作所修改区的信息 |
Differential Changed Map |
最后一条 backup database 语句之更改区的信息 |
Data |
用来存储数据 |
Row Overflow Page |
行溢出的数据 |
LOB |
存放大型对象数据:text,nvarchar(max),varchar(max)… |
五.数据页的结构
在sql
server里有这么多页文件类型,哪个页里是怎么存储的,存储了什么内容呢?下面来查看一个数据页存储的信息
下面通过partition_id的标识符:72057594038976512
找到first_page 字段
第一页
select * from sys.system_internals_allocation_units where container_id=72057594038976512
由于存储关系,页码是以字节16进制显示0x720000000100,这里需要倒序后就是0x010000000072,
0x表示:文件组号
0072从16进制转成10进制为第114页(后四字节代表页的编号)
通过Dbcc page可以查看页的具体内容,使用之前dbcc page, 先打开dbcc
traceon (3604) 告诉sql server将结果返回给客户端 ,dbcc Page 四个参数
如下:
dbid | dbname 该页的数据库ID或数据
Filenum 页面文件号
Pagenum 页面号
Printopt =1 对每条记录打印缓冲报头,页面报头,输出行偏移表
具体使用如下:
dbcc traceon (3604)
dbcc page(‘test’,1,114,1)
数据页结构输出分为四个主要阶段:buffer, page
header, data, offset table
Buffer: 用来标识该数据页在内存中的位置。
page header: 页头信息
data:存储的数据
offset table: 偏移量
感兴趣的朋友,可以再深入研究。这里粗略讲下。
PAGE: (1:114)
BUFFER:
BUF @0x0000000081FE4640
bpage = 0x0000000081B66000 bhash = 0x0000000000000000 bpageno = (1:114)
bdbid = 5 breferences = 0 bcputicks = 222
bsampleCount = 1 bUse1 = 5256 bstat = 0xc00009
blog = 0x32159 bnext = 0x0000000000000000
PAGE HEADER:
Page @0x0000000081B66000
m_pageId = (1:114) m_headerVersion = 1 m_type = 1
m_typeFlagBits = 0x4 m_level = 0 m_flagBits = 0x8200
m_objId (AllocUnitId.idObj) = 35 m_indexId (AllocUnitId.idInd) = 256
Metadata: AllocUnitId = 72057594040221696
Metadata: PartitionId = 72057594038976512 Metadata: IndexId = 0
Metadata: ObjectId = 5575058 m_prevPage = (0:0) m_nextPage = (0:0)
pminlen = 4 m_slotCnt = 2 m_freeCnt = 2070
m_freeData = 6118 m_reservedCnt = 0 m_lsn = (27:202:2)
m_xactReserved = 0 m_xdesId = (0:0) m_ghostRecCnt = 0
m_tornBits = 2253409
Allocation Status
GAM (1:2) = ALLOCATED SGAM (1:3) = ALLOCATED
PFS (1:1) = 0x62 MIXED_EXT ALLOCATED 80_PCT_FULL DIFF (1:6) = CHANGED
ML (1:7) = NOT MIN_LOGGED
DATA:
Slot 0, Offset 0x60, Length 3011, DumpStyle BYTE
Record Type = PRIMARY_RECORD Record Attributes = NULL_BITMAP VARIABLE_COLUMNS
Record Size = 3011
Memory Dump @0x000000001116A060
0000000000000000: 30000400 01000001 00c30b61 61616161 ?0..........aaaaa
0000000000000010: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000020: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000030: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000040: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000050: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000060: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000070: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000080: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000090: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000100: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000110: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000120: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000130: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000140: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000150: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000160: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000170: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000180: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000190: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000200: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000210: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000220: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000230: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000240: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000250: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000260: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000270: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000280: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000290: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000300: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000310: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000320: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000330: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000340: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000350: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000360: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000370: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000380: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000390: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000400: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000410: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000420: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000430: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000440: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000450: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000460: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000470: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000480: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000490: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000500: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000510: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000520: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000530: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000540: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000550: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000560: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000570: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000580: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000590: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000600: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000610: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000620: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000630: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000640: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000650: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000660: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000670: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000680: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000690: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000700: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000710: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000720: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000730: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000740: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000750: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000760: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000770: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000780: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000790: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000800: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000810: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000820: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000830: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000840: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000850: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000860: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000870: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000880: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000890: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000900: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000910: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000920: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000930: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000940: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000950: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000960: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000970: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000980: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000990: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A00: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A10: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A20: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A30: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A40: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A50: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A60: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A70: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A80: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A90: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AA0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AB0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AC0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AD0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AE0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AF0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B00: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B10: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B20: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B30: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B40: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B50: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B60: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B70: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B80: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B90: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000BA0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000BB0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000BC0: 616161???????????????????????????????aaa
Slot 1, Offset 0xc23, Length 3011, DumpStyle BYTE
Record Type = PRIMARY_RECORD Record Attributes = NULL_BITMAP VARIABLE_COLUMNS
Record Size = 3011
Memory Dump @0x000000001116AC23
0000000000000000: 30000400 01000001 00c30b61 61616161 ?0..........aaaaa
0000000000000010: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000020: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000030: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000040: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000050: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000060: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000070: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000080: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000090: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000000F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000100: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000110: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000120: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000130: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000140: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000150: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000160: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000170: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000180: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000190: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000001F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000200: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000210: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000220: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000230: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000240: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000250: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000260: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000270: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000280: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000290: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000002F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000300: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000310: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000320: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000330: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000340: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000350: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000360: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000370: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000380: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000390: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000003F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000400: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000410: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000420: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000430: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000440: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000450: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000460: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000470: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000480: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000490: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000004F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000500: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000510: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000520: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000530: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000540: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000550: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000560: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000570: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000580: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000590: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000005F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000600: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000610: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000620: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000630: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000640: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000650: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000660: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000670: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000680: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000690: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000006F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000700: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000710: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000720: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000730: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000740: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000750: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000760: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000770: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000780: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000790: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000007F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000800: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000810: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000820: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000830: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000840: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000850: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000860: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000870: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000880: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000890: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000008F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000900: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000910: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000920: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000930: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000940: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000950: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000960: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000970: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000980: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000990: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009A0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009B0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009C0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009D0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009E0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
00000000000009F0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A00: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A10: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A20: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A30: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A40: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A50: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A60: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A70: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A80: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000A90: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AA0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AB0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AC0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AD0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AE0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000AF0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B00: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B10: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B20: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B30: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B40: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B50: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B60: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B70: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B80: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000B90: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000BA0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000BB0: 61616161 61616161 61616161 61616161 ?aaaaaaaaaaaaaaaa
0000000000000BC0: 616161???????????????????????????????aaa
OFFSET TABLE:
Row - Offset
1 (0x1) - 3107 (0xc23)
0 (0x0) - 96 (0x60)
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
如果转载,请注明博文来源: www.cnblogs.com/xinysu/
,版权归 博客园 苏家小萝卜 所有。望各位支持!
SQLServer的数据页大小是8kb,8个连续的物理页组成一个区。区分混合区跟统一区,混合区内可以存储不同数据库对象的内容,通常这个数据库对象较小;统一区表示区内连续的8个数据页存储的都是同一个数据库对象的内容。
SQL
SERVER的磁盘读写是按页级进行,每次I/O操作的数据最小单位是以8kb为单位的页。页是存储单位,区是管理单位。
数据页根据其存储内容不同,分为多种类型,本文简要描述。
1 数据页的类型
不同类型的数据,存储在不同类型的页面里,大致可以分为3个方向:存储实际数据的、存储管理数据页数据的及存储备份相关的数据,这3个反向,又各有不同的page
type。详见下表。
Id
User_for
Page Type
Page Name
Description
1
实际数据
数据页
Data Page
堆表或者聚集索引的叶子节点
2
索引页
Index Page
聚集索引的分支节点或者非聚集索引
3
LOB
LOB
用来存放大型对象数据类型:text , image ,varchar(max) , varbinary(max)等
4
行溢出页
Row Overflow Page
只能存储单一text或者image列数据块
5
管理数据页数据
GAM页
Global Allocation Map
管理统一区的位图
6
SGAM页
Shared Global Allocation Map
管理混合区的位图
7
IAM页
Index Allocation Map
分配单元分配到的区
8
PFS页
Page Free Space
可用空间
9
备份相关的数据
DCM页
Differential Changed Map
自最后一条backup database 语句之后更改的区的信息
10
BCM页
Bulk Changed Map
自最后一条backup log语句之后的大容量操作所修改的区的信息
针对备份相关数据的页面类型,这里不做详细描述。存储实际数据的页面类型,
后面会有几篇博文详细描述。本文重点讲解下 存储 管理数据页数据
的页面类型:GAM,SGAM,IAM,PFS
。这块,对tempdb的性能优化会有比较大的帮助。
每一个数据文件的开头都分布GAM,SGAM,PFS这些页面,它们记录了这个数据库文件中哪些页面已经被使用,哪些页面还没有使用。
1.1 PFS
PFS页,用来跟踪页分配级别,存储当前数据文件里所有页分配及可用空间的信息,每一个数据文件的第2个数据页都是PFS,页号为1
。该页面中,每一个字节描述后面每一个数据页是否还有空间可以写记录,也就是一个PFS页是8k,约有8k个字节可以描述后续每个页面的使用情况,也就是一个PFS页,可以描述8k个数据页的使用情况,这就意味着单个PFS页能够存储约64M数据页的可用空间情况。所以,大约每隔64Mb,就会有一个新的PFS页。
每个字节描述一个数据页的使用情况,一个字节有8个bits,分别第0-7位,用途如下:
- bit 0-2位,描述该页还有多少空闲空间
- 0x00 is empty
- 0x01 is 1 to 50% full
- 0x02 is 51 to 80% full
- 0x03 is 81 to 95% full
- 0x04 is 96 to 100% full
- bit 3 (0x08): 该数据页是否存在鬼影记录(ghost
records:http://www.cnblogs.com/lyhabc/archive/2013/06/16/3138214.html)? - bit 4 (0x10): 是否是IAM页?
- bit 5 (0x20): 是否是混合页?
- bit 6 (0x40): 是否已分配使用?
- Bit 7 保留,未使用,无实际含义
1.2 GAM & SGAM
SQL SERVER的区分为两种类型:混合区(uniform extent)跟统一区(mixed
extent)。
混合区,指区内连续的8个数据页,分别分配给不同的数据库对象存储使用,这有利于小表在使用的过程中,没有一下子就占据了一个区,而是先从混合区使用,合理分配空间;统一区,指的是区内连续8个页都是用来存储同一个数据对象的,当一个表格分配了8个混合区页后,会开始分配使用统一区,避免数据分散存储在各个不连续的数据页中。
1.2.1 GAM
GAM页,用来跟踪区的分配情况,描述每区是否被分配,每个区用1bit标识其分配情况。一个GAM页8k,一共有8k*8
bit,也就是差不多可以标识 64000个区,约 8k*8bit*(8*8k)=4G
空间,所以,大概每隔
4G空间左右,就有一个GAM页来标识下一个4G的空间分配情况。
- Bit=1,标识当前的区是空闲的,可以用来分配;
- Bit=0,标识当前的区以及被数据使用。
SQL
Server通过读取GAM页找到可用空间,并把这个区或者区内的某一个页分配给一个对象。一个范围仅存储一个比特(而不是像PFS页,PFS是一个页一个字节),意味着单个GAM页能够追踪更多空间,在一个数据文件中,你可以在大约4GB间隔的空间找到一个新GAM页。然而,数据文件中的第一个GAM页的页码总是2,因此“2:1:2”就表示tempdb中的第一个GAM页。
1.2.2 SGAM
SGAM页,用来跟踪区的分配情况,描述哪些区是混合区并且至少有一个空闲的数据页。1bit描述一个区,1表示该区是混合区且至少有一个空闲的数据页,代表该区可以分配给需要使用混合区的对象。
SQL
Server通过读取SGAM页来找到与可用空间混合的范围来把空间分配给小对象。单个SGAM页能够追踪4GB的空间,因此,你可以在4GB的间隔中找到它们,就像GAM页一样。在数据文件中,第一个SGAM页是页3,所以“2:1:3”就表示tempdb的第一个SGAM页。
那么,这两种类型的数据页是如何协助存储引擎对区进行管理的呢?
- 当存储引擎分配一个统一区时,在GAM页中寻找标记为1的页面,把标记修改为0,SGAM页中的标记位不做变动,保持为0;
- 当存储引擎分配一个混合区时,在GAM页中寻找标记为1的页面,把标记修改为0,SGAM页中的标记位从0修改1;
- 当存储引擎寻找一个有空闲页的混合区是,直接在SGAM页中查找标记位1对应的数据页;如果没有找到,则会重新分配一个混合区。
1.2.3 IAM
区的分配,使用GAM及SGAM管理;页的使用情况,采用PFS页管理。那么,每一个数据库对象在各个页里或者区里的存储情况,由谁协助管理呢?答案是
IAM页。
一个表格中,IAM页用来描述数据的分布情况,基于分配单元来描述。根据实际数据的存储情况,分为以下3种分配单元:
- IN_ROW_DATA
- 存储堆或索引分区,即heap和B-tree。
- LOB_DATA
- 存储大型对象 (LOB)
数据类型,例如 xml、varbinary(max) 和 varchar(max)。
- 存储大型对象 (LOB)
- ROW_OVERFLOW_DATA
- 存储超过 8,060
字节行大小限制的 varchar、nvarchar、varbinary 或 sql_variant 列中存储的可变长度数据。
- 存储超过 8,060
每个有数据的表格,至少有一个 IAM页来管理
IN_ROW_DATA的存储情况,如果表格里有LOB_DATA,则会多一个IAM页来管理LOB_DATA,ROW_OVERFLOW_DATA也是一样。
2 数据页结构
数据页有4个部分:页头、行记录、空闲空间及行偏移量。详见下图:
2.1 页头
占用96字节,存储跟该页面相关的系统数据。
页头的内容如下:
2.2 行记录
- 存储数据行记录以及索引数据
- 行记录也可以在独立页面上存储,比如行溢出数据即LOB数据
2.3 空闲空间
- 除去页头,行记录,以及偏移量剩下的空间,提供给行记录及行偏移量使用
2.4 行偏移量
- 行偏移是一个个小块组成的,每个小块2个字节,表示数据行从第几个字节后开始记录,也就是距离页头多少偏移量开始记录
- 存储方式是从有往左存储,用槽位来描述,slot 0 ,slot 1 ….
- 行偏移量记录的内容是什么呢?该行记录从哪个字节开始,一般情况下,slot
1 从第96个字节后开始 - 常说的聚集索引存储顺序是物理排序,指的不是行记录物理排序,而是行偏移量物理排序,数据页中,行记录都是顺序往后添加的,通过修改行偏移量来达到聚集索引的顺序查找
3 查询数据页存储格式的途径
查看数据页存储方式这里简单介绍两种方式:dbcc page查看以及dbcc
ind查看,这两个指令都是非公开的指令,所以msdn上找不到相应的使用说明。不过,还是可以通过
技术内幕的相关资料来查阅分析。
这两个指令在打开跟踪标记2588后可以查看其参数说明,打开跟踪标记3604后,可以把指令执行结果放回到客户端而不是记录在错误日志中。
3.1 dbcc ind
3.1.1 语法说明
查看ind的参数说明,打开跟踪标记2588,help查询。
DBCC TRACEON(2588)
DBCC HELP('ind')
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
dbcc IND ( { 'dbname' | dbid }, { 'objname' | objid }, { nonclustered indid | 1 | 0 | -1 | -2 } [, partition_number] )
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
输出的格式有4种方式,不同方式,输出不一样。
- -2:返回所有IAM页,基于管理行内数据页,行溢出数据页及大对象数据页的IAM页
- -1:返回所有IAM页及数据页。
- 0:返回管理行内数据页的IAM页,行内数据页
- 1:返回聚集索引的数据页信息及IAM页信息(同-1)
- 2:返回第1个非聚集索引的数据页信息及IAM页信息
- 3:返回第2个非聚集索引的数据页信息及IAM页信息
- …
- n:返回第(n-1)个非聚集索引的数据页信息及IAM页信息(n>1)
3.1.2 测试案例
新建表格,tbpage_c,包含大数据对象及行溢出情况。INSERT一行数据,然后分析。数据库中,每行数据默认存储在同一个数据页,如果一个数据页存储不了一行数据,则会出现行溢出情况,具体可自行了解行溢出,所以在这个表格里边,设置两个数据列占用空间>8k,具体见表SQL如下,造数据的SQL如下。
create table tbpage_c(id int identity(1,1) not null primary key ,namea varchar(6000),nameb varchar(3000),descriptions text)
#name_a INSERT 6000个字符,name_b INSERT 3000个字符,descriptions INSERT 100个字符
INSERT INTO tbpage_c(NAMEA,nameb,descriptions)
select
substring(stuff((select name+',' from master.dbo.spt_values for xml path('')),1,1,''),1,6000) ,
substring(stuff((select name+',' from master.dbo.spt_values for xml path('')),1,1,''),1,3000) ,
substring(stuff((select name+',' from master.dbo.spt_values for xml path('')),1,1,''),1,100)
dbcc ind(‘dbpage’,’tbpage_c’,-2)
选项为-2,显示表格的所有IAM页面。由于表格存在行溢出及大对象列,所以会有其相对应的IAM页面,故可以看到有3个IAM,分别为 In-row
data ,Row-overflow data ,LOB data。
dbcc ind(‘dbpage’,’tbpage_c’,-1)
选项为-1,返回所有IAM页及数据页。
- 数据页号310,309属于 In-row data
类型。309记录实际数据,310记录In-row data实际数据页的分布情况。 - 数据页号307,308属于 Row-overflow
data 类型。307记录实际数据,308记录 Row-overflow
data 实际数据页的分布情况。 - 数据页号305,306属于 LOB data 类型。305记录实际数据,306记录 LOB
data 实际数据页的分布情况。
dbcc ind(‘dbpage’,’tbpage_c’,0)
选项为0,返回管理行内数据页的IAM页,行内数据页,故此处仅返回 In-row data
相关数据页。
dbcc ind(‘dbpage’,’tbpage_c’,1)
选项为1,返回聚集索引涉及到所有IAM页及数据页。
3.2 dbcc page
3.2.1 语法说明
查看page的参数说明,打开跟踪标记2588,help查询。
DBCC TRACEON(2588)
DBCC HELP('PAGE')
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
dbcc PAGE ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系
输出的格式有4种方式,不同方式,输出不一样。
- 0:输出可读形式的数据页页头数据
- 1:输出可读形式的数据页页头数据,并且还有槽位对应记录的十六进制内容
- 2:输出可读形式的数据页页头数据,输出整个数据页页头的十六进制数据,整一页的内容都显示,包括未使用的空间。
- 3:输出可读形式的数据页页头数据,并且包括记录中每个字段的可读形式,行溢出数据也会显示数据内容,但是大对象则不显示内容,而是说明其存储位置!所以选项3,也是输出内容最全面的。
3.2.2 测试案例
采用3.1.2的表格,分析其 IN_ROW DATA的数据页面,page_id=309 。
本次测试,没有采用 with tableresults分析,如果dbcc
page(‘dbpage’,1,309,0) with
tableresults,结果则是已表格形式返回,可以提供后期管理分析用。
选项为0,输出可读格式的数据页 页头数据。
DBCC TRACEON(3604)
dbcc page('dbpage',1,309,0)
----------------------------------------------------------------------------------------------------------
PAGE: (1:309)
BUFFER:
BUF @0x000000027C0827C0
bpage = 0x000000026FA86000 bhash = 0x0000000000000000 bpageno = (1:309)
bdbid = 10 breferences = 0 bcputicks = 0
bsampleCount = 0 bUse1 = 46781 bstat = 0xb
blog = 0x212121cc bnext = 0x0000000000000000
PAGE HEADER:
Page @0x000000026FA86000
m_pageId = (1:309) m_headerVersion = 1 m_type = 1
/*
m_pageId 当前页面号码;m_headerVersion 版本号,始终为1;m_type 页面数据类型,1为数据页面,10为IAM页面等,具体参考pagetype
*/
m_typeFlagBits = 0x0 m_level = 0 m_flagBits = 0xc000
/*
m_typeFlagBits 数据页和索引页为4,其他页为0
m_level 该页在索引页(B树)中的级数,0表示为叶子节点
m_flagBits 页面标志
*/
m_objId (AllocUnitId.idObj) = 35 m_indexId (AllocUnitId.idInd) = 256
/*
m_indexId (AllocUnitId.idInd) 索引ID,0 代表堆, 1 代表聚集索引, 2-250 代表非聚集索引 大于250就是text或image字段
*/
Metadata: AllocUnitId = 72057594040221696
Metadata: PartitionId = 72057594038976512 Metadata: IndexId = 1
Metadata: ObjectId = 341576255 m_prevPage = (0:0) m_nextPage = (0:0)
/*
Metadata: AllocUnitId 存储单元的ID,sys.allocation_units.allocation_unit_id
Metadata: PartitionId 数据页所在的分区号,sys.partitions.partition_id
Metadata: ObjectId 该页面所属的对象的id,sys.objects.object_id
Metadata: IndexId sys.objects.object_id&sys.indexes.index_id
m_prevPage 该数据页的前一页面
m_nextPage 该数据页的后一页面
*/
pminlen = 8 m_slotCnt = 1 m_freeCnt = 5035
m_freeData = 3155 m_reservedCnt = 0 m_lsn = (39:400:68)
m_xactReserved = 0 m_xdesId = (0:0) m_ghostRecCnt = 0
m_tornBits = 0 DB Frag ID = 1
/*
pminlen 定长数据所占的字节数为多少个字节
m_slotCnt 页面中的数据的行数
m_freeCnt 页面中剩余的空间,还剩多少字节的空间
m_freeData 页面空闲空间的起始位置,一个页面8KB约等于8192字节 页面空闲空间的位置在3155
m_reservedCnt 活动事务释放的字节数
m_lsn 日志记录号
m_xactReserved 最新加入到m_reservedCnt领域的字节数
m_xdesId 添加到m_reservedCnt的最近的事务id
m_ghostRecCnt 幻影数据的行数
m_tornBits 页的校验位或者被由数据库页面保护形式决定页面保护位取代
数据库页面的 lsn
SQL Server在内存中维护一个哈希表,记录下自己所有做过写入动作的页面最新的LSN(Log Sequence Number)值。
在下次读出页面的时候,会去比较这两个值是否相等。由于LSN是个自动增长的唯一值,每个发生新修改的页面,
LSN的值会比原来的要大。所以如果读到的LSN与内存中存放的不一致,就说明上次的写入请求没有真正完成。
这时824错误也会被触发。
*/
Allocation Status
GAM (1:2) = ALLOCATED SGAM (1:3) = ALLOCATED
PFS (1:1) = 0x60 MIXED_EXT ALLOCATED 0_PCT_FULL DIFF (1:6) = CHANGED
ML (1:7) = NOT MIN_LOGGED
选项为1,输出可读形式的数据页页头数据,并且还有槽位对应记录的十六进制内容。页头数据已在上文分析,不做处理,这里截图描述槽位对应记录
dbcc page('dbpage',1,309,1)
----------------------------------------------------------------------------------------------------------
页头信息省略中...
Slot 0, Offset 0x60, Length 3059, DumpStyle BYTE
/*
Slot 槽位号,一个槽位一行数据,这一行数据从 0x60 = 96开始,长度是 3059 bytes
下文文该行记录的16进制内容
*/
Record Type = PRIMARY_RECORD Record Attributes = NULL_BITMAP VARIABLE_COLUMNS
Record Size = 3059
Memory Dump @0x000000001F978060
/*下文为这一行记录 3059个字节内容*/
0000000000000000: 30000800 01000000 0400a003 002b80e3 0bf38b02 0............+......
0000000000000014: 00000001 000000d5 69000070 17000033 01000001 ........i..p...3....
0000000000000028: 00000028 72707429 2c594553 204f5220 4e4f2c53 ...(rpt),YES OR NO,S
000000000000003C: 59535245 4d4f5445 4c4f4749 4e532054 59504553 YSREMOTELOGINS TYPES
中间省略...
0000000000000BCC: 7072696d 61727920 6b65792c 616e7369 5f6e756c primary key,ansi_nul
0000000000000BE0: 6c5f6400 00d10700 00000031 01000001 000100 l_d........1.......
OFFSET TABLE:
Row - Offset
0 (0x0) - 96 (0x60)
选项为2, 输出整个数据页页头的十六进制数据,整一页的内容都显示,包括未使用的空间。
dbcc page('dbpage',1,309,2)
----------------------------------------------------------------------------------------------------------
页头信息省略中...
/*下文为一整页的数据存储情况,包括行记录跟空闲空间,不区分槽位*/
DATA:
Memory Dump @0x0000000028178000
0000000028178000: 01010000 00c00001 00000000 00000800 00000000 ....................
0000000028178014: 00000100 23000000 ab13530c 35010000 01000000 ....#.....S.5.......
0000000028178028: 27000000 90010000 44000000 00000000 00000000 '.......D...........
000000002817803C: 00000000 01000000 00000000 00000000 00000000 ....................
0000000028178050: 00000000 00000000 00000000 00000000 30000800 ................0...
0000000028178064: 01000000 0400a003 002b80e3 0bf38b02 00000001 .........+..........
0000000028178078: 000000d5 69000070 17000033 01000001 00000028 ....i..p...3.......(
000000002817808C: 72707429 2c594553 204f5220 4e4f2c53 59535245 rpt),YES OR NO,SYSRE
00000000281780A0: 4d4f5445 4c4f4749 4e532054 59504553 2c535953 MOTELOGINS TYPES,SYS
省略中...
0000000028178C1C: 65726963 20726f75 6e646162 6f72742c 7072696d eric roundabort,prim
0000000028178C30: 61727920 6b65792c 616e7369 5f6e756c 6c5f6400 ary key,ansi_null_d.
0000000028178C44: 00d10700 00000031 01000001 00010000 00212121 .......1.........!!!
0000000028178C58: 21212121 21212121 21212121 21212121 21212121 !!!!!!!!!!!!!!!!!!!!
0000000028178C6C: 21212121 21212121 21212121 21212121 21212121 !!!!!!!!!!!!!!!!!!!!
省略中...
0000000028179FE0: 21212121 21212121 21212121 21212121 21212121 !!!!!!!!!!!!!!!!!!!!
0000000028179FF4: 21212121 21212121 21216000 !!!!!!!!!!`.
OFFSET TABLE:
Row - Offset
0 (0x0) - 96 (0x60)
选项为3,
输出可读形式的数据页页头数据,并且包括记录中每个字段的可读形式,行溢出数据也会显示数据内容,但是大对象则不显示内容,而是说明其存储位置!
dbcc page('dbpage',1,309,3)
-------------------------------------------------------------------------------------------------
页头信息省略中...
Slot 0 Offset 0x60 Length 3059
/*
Slot 槽位号,一个槽位一行数据,这一行数据从 0x60 = 96开始,长度是 3059 bytes
*/
Record Type = PRIMARY_RECORD Record Attributes = NULL_BITMAP VARIABLE_COLUMNS
Record Size = 3059
Memory Dump @0x000000002BB78060
/*下文为这一行记录 3059个字节内容*/
0000000000000000: 30000800 01000000 0400a003 002b80e3 0bf38b02 0............+......
0000000000000014: 00000001 000000d5 69000070 17000033 01000001 ........i..p...3....
0000000000000028: 00000028 72707429 2c594553 204f5220 4e4f2c53 ...(rpt),YES OR NO,S
000000000000003C: 59535245 4d4f5445 4c4f4749 4e532054 59504553 YSREMOTELOGINS TYPES
0000000000000050: 2c535953 52454d4f 54454c4f 47494e53 20545950 ,SYSREMOTELOGINS TYP
0000000000000064: 45532028 55504441 5445292c 41463a20 61676772 ES (UPDATE),AF: aggr
0000000000000078: 65676174 65206675 6e637469 6f6e2c41 503a2061 egate function,AP: a
中间省略...
0000000000000BB8: 2c6e756d 65726963 20726f75 6e646162 6f72742c ,numeric roundabort,
0000000000000BCC: 7072696d 61727920 6b65792c 616e7369 5f6e756c primary key,ansi_nul
0000000000000BE0: 6c5f6400 00d10700 00000031 01000001 000100 l_d........1.......
/*下文为 在槽位0 slot 0 的 这一行记录 ,详细描述每一列的存储情况*/
Slot 0 Column 1 Offset 0x4 Length 4 Length (physical) 4
/*slot 0,第一列 在本页占用4字节,列名为id,值为1*/
id = 1
namea = [BLOB Inline Root] Slot 0 Column 2 Offset 0x13 Length 24 Length (physical) 24
/*slot 0,第2列,本页占用24字节,列名为namea
这里可以看到是发生了行溢出情况,列中没有数据,但是存储了该列的实际位置
实际大小为6000字节,值 存储在第一个文件第307页的 slot 0 槽位上*/
Level = 0 Unused = 0 UpdateSeq = 1
TimeStamp = 1775566848 Type = 2
Link 0
Size = 6000 RowId = (1:307:0)
Slot 0 Column 3 Offset 0x2b Length 3000 Length (physical) 3000
nameb = (rpt),YES OR NO,SYSREMOTELOGINS TYPES,SYSREMOTELOGINS TYPES (UPDATE),AF: aggregate function,AP: applicati
on,C : check cns,...省略中...primary key,ansi_null_d
/*slot 0,第3列 ,本页占用3000字节,列名为nameb ,值为 nameb= 的后面一大段中*/
descriptions = [Textpointer] Slot 0 Column 4 Offset 0xbe3 Length 16 Length (physical) 16
/*slot 0,第4列 ,该列为text数据类型,本页占用16字节,列名为descriptions,其值存储在第一个文件的第305页的 slot 1 槽位上*/
TextTimeStamp = 131137536 RowId = (1:305:1)
Slot 0 Offset 0x0 Length 0 Length (physical) 0
/*该表格有主键 ,该行的keyhashvalue值*/
KeyHashValue = (8194443284a0)
选项为3,还有一个特殊情况,就是当分析非聚集索引的时候,其返回会多一个
table
create table tbpage(id int primary key not null identity(1,1) ,cola int,colb varchar(10),colc varchar(100))
insert into tbpage(cola,colb,colc) select object_id,type,name from sys.objects
create index ix_colc on tbpage(colc)
select * from sys.indexes where name='ix_colc'
dbcc ind('dbpage','tbpage',-1)
dbcc page(‘dbpage’,1,319,3)
返回多了一个可读性的列表,详细描述索引的列情况及键值情况,同时,原先的消息内容也还保持。
参考博文:
参考书籍:
《SQL SERVER 2012 实施与实战管理指南》
《SQL Server性能调优实战》
《SQL SERVER 2005 技术内幕 存储引擎》