WEB开发网
开发学院数据库MSSQL Server BIT类型在SQL Server中的存储大小 阅读

BIT类型在SQL Server中的存储大小

 2008-08-26 09:56:02 来源:WEB开发网   
核心提示: 我这里返回的是0x76 00 00 00 01 00,这里需要反转过来看0x00 01 00 00 00 76,BIT类型在SQL Server中的存储大小(2),其中前两个字节是文件号,后面的是页面号,例如创建这样的表:CREATETABLEvtt(c1BITNOTNULL,c2VARC

我这里返回的是0x76 00 00 00 01 00,这里需要反转过来看0x00 01 00 00 00 76。其中前两个字节是文件号,后面的是页面号,所以文件号是1,页面号是118(0x76转换成十进制就是118)

(3)使用DBCC page命令查看该页的内部结构:

   DBCCtraceon(3604)
  DBCCpage(TestDB,1,118,3)

这儿DBCC traceon(3604)表示将页面内容直接输出,TestDB是我创建的tt表所在的数据库,1和118前面已经说了。最后一个是打印选项。0表示只输出页头;1则不会输出所有内容,只是输出有数据的内容;2表示完整的输出这个页的内容,3则和1差不多,但是要每条记录分别列出列的值。以下是输出的需要关注的内容:

00000000:10000b0001000000016161030000††††††.........aa...

关于数据行的具体格式我就不在这里多说了,在《SQL Server 2005技术内幕 存储引擎》中有详细介绍。我们插入的数据从第5个字节开始,是01000000 016161。这儿01000000就是c1,由于是int类型,所以占用4个字节。接下来01就是c2,在这里占用了1字节。再接下来6161就是c3了。

2.多个BIT类型的列之间使用变长数据类型列分开,则去掉变长列,然后看连续的BIT类型列的个数,每列占用一个位,如果多余了8列那就再占用更多的字节。例如创建这样的表:

 CREATETABLEvtt
  (
  c1BITNOTNULL,
  c2VARCHAR(5)NOTNULL,
  c3BITNOTNULL,
  c4NVARCHAR(5)NULL,
  c5BITNULL,
  c6INTNOTNULL
  )

这里将变长列筛选出来后就变成了c1、c3、c5、c6,有3个BIT类型列是连续的,所以c1、c3、c5将公用一个字节。接下来就来验证一下:

Tags:BIT 类型 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接