国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于數據存儲的一些瑣事

2019-11-17 03:53:37
字體:
來源:轉載
供稿:網友
一、SQL SERVER2005中每行的最小存儲空間是9,而不是8。

【測試】

create table tb(col char)

go

insert into tb values('a')

dbcc ind(test,tb,1)

dbcc traceon(3604)

dbcc page(test,1,41,1)

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

二、SQL SERVER2005中每行的最大存儲空間是8060,但8060中包含了7B的行開銷,所

以每行數據我們能使用的最大空間為8053,在sql 2000中試8039。

【測試1】

create table test(col1 char(8000),col2 char(60))

提示:

消息1701,級別16,狀態1,第1 行

創建或更改表'test' 失敗,因為最小行大小是8067,包括7 字節的內部開銷。而此值超出了允許的8060 字節的最大表行大小。

【測試2】

create table test(col1 char(8000),col2 char(53))

提示:

命令已成功完成。

SQL SERVER2005中對數據每行記錄的限制做了一定的調整,對于包含變長類型的表,每一列的長度仍然必須在每行8000以內,但是它們的合并寬度可以超過8060B的限制。

【測試3】

create table tb(col1 char(8000),col2 varchar(8000))

insert into tb values('a',replicate('b',5000))

三、sql server中表中數據存儲結構的說明






第一個字節:狀態位A包含了一張表示行屬性的位圖(從左向右分別為 Bit 76543210),每位的含義如下:

Bit 0:版本信息

Bit 1至3:作為一個3位的值,0表示一條主記錄,1表示一條轉移過的記錄,2表示一個轉移樁,3表示一條索引記錄,4表示一段blob或行溢出數據,5表示Ghost索引記錄,6表示ghost數據記錄

Bit 4:表示存在一個NULL位圖;在sql server2005中,即使任何列都不允許為空,null位圖總是存在,所以該位總是為1

Bit 5:表示該表中有變長列

Bit 6:sql server2005中沒有使用到

Bit 7:表示ghost記錄

第二個字節:sql server 2005中未使用

NULL位圖:NULL位圖主要說明每個數據行哪個列的數據為NULL,而不是說明某個列是否允許為NULL。NULL位圖所占用的字節數的計算方式為:ceiling(列數/8)或者(列數+7)/8,MS給的算法是ceiling(列數/8),但兩者的計算結果是一樣的。NULL位圖中的每一位對應的是該表中的每一列(最后一位對應的是,如果該行數據該列為NULL,則對應的位為1,如果不為NULL,則為0。

【測試4】

if object_id('tb') is not null

drop table tb

go

create table tb(col1 int,col2 char(10))

go

insert into tb values(null,null)

insert into tb values(null,'aa')

insert into tb values(123,null)



insert into tb values(12,'aa')

dbcc ind(test,tb,1)

go

dbcc traceon(3604)

dbcc page(test,1,120,1)

結果:(只關注位圖字節的結果)

Slot 0 :ff –-11111111 最低兩位為1,因為該行中兩列都是null

Slot 1 :fd –-11111101 該行中col1為null,所以最低位為1,col2為‘aa‘,所以該位為0

Slot 0 :fe –-11111110該行中col1為123,所以最低位為0,col2為null,所以該位為1

Slot 0 :fc –-11111100 最低兩位為0,因為該行中兩列都不是null。




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 克山县| 张家港市| 昭苏县| 衡水市| 五常市| 镇原县| 来宾市| 抚顺县| 建始县| 天水市| 宁南县| 密山市| 鸡东县| 台安县| 永清县| 吉林省| 赫章县| 杂多县| 遂溪县| 曲沃县| 榕江县| 蕲春县| 霍邱县| 永宁县| 浦东新区| 宣威市| 南投县| 临猗县| 额济纳旗| 泸定县| 大足县| 湄潭县| 南丹县| 宜丰县| 兰西县| 延安市| 武山县| 西吉县| 天气| 游戏| 通道|