您好,登錄后才能下訂單哦!
表的數(shù)據(jù)行具有圖6-5 所示的一般結(jié)構(gòu) (只要數(shù)據(jù)以未壓縮的形式存儲(chǔ))。此格式稱為 FixedVar 格式, 因?yàn)樗泄潭ㄩL(zhǎng)度列的數(shù)據(jù)首先存儲(chǔ), 后跟所有可變長(zhǎng)度列的數(shù)據(jù)。表6-7 顯示了存儲(chǔ)在每個(gè) FixedVar 行中的信息。
狀態(tài)位 A 包含指示行屬性的位圖。這些位具有以下含義:
Bit 0 表示特殊的版本控制信息。在 SQL server 2012 中, 這始終是0。
Bits 1到3作為3位值,
0 (000) 表示主記錄,
1 (001) 表示轉(zhuǎn)發(fā)的記錄,
2 (010) 表示轉(zhuǎn)發(fā)存根,
3 (011) 指示一個(gè)索引記錄,
4 (100) 指示一個(gè) BLOB 片段或行溢出數(shù)據(jù),
5 (101) 表示虛影索引記錄,
6 (110) 表示虛影數(shù)據(jù)記錄,
7 (111) 表示虛影版本記錄。
Bit 4 表示存在空位圖。在 SQL server 2012 中, 即使在任何列中都不允許有 null,
也始終存在空位圖。
Bit 5 表示行中存在可變長(zhǎng)度列。
Bit 6 表示該行包含版本控制信息。
Bit 7 在 SQL server 2012 中不使用。
狀態(tài)位 B 字段中使用的唯一位表示該記錄是虛影轉(zhuǎn)發(fā)的記錄。
您可以在圖6-5 和表6-7 中看到第三個(gè)和第四個(gè)字節(jié)指示行的固定長(zhǎng)度部分的長(zhǎng)度。如圖6-5 所示, 它的長(zhǎng)度不包括2個(gè)字節(jié)的列數(shù)和空位圖, 這取決于表中列的總數(shù), 這是可變長(zhǎng)度。解釋這些位中數(shù)據(jù)的另一種方法是, 在該行中可以找到列數(shù)的位置。例如, 如果第三個(gè)和第四個(gè)字節(jié) (字節(jié) 2–3) 包含值 0x0016 (即十進(jìn)制 22), 則表示該行不僅在列數(shù)的值之前有22個(gè)字節(jié), 而且還意味著可以在字節(jié)22中找到列數(shù)的值。
在每個(gè)固定長(zhǎng)度或可變長(zhǎng)度數(shù)據(jù)塊中, 數(shù)據(jù)以創(chuàng)建表的列順序存儲(chǔ)。例如, 假設(shè)使用以下命令創(chuàng)建了一個(gè)表:
CREATE TABLE Test1
(
Col1 int NOT NULL,
Col2 char(25) NOT NULL,
Col3 varchar(60) NULL,
Col4 money NOT NULL,
Col5 varchar(20) NOT NULL
);
此行的固定長(zhǎng)度數(shù)據(jù)部分包含 Col1 的數(shù)據(jù), 后跟 Col2 的數(shù)據(jù), 后跟 Col4 的數(shù)據(jù)??勺冮L(zhǎng)度數(shù)據(jù)部分包含 Col3 的數(shù)據(jù), 后跟 Col5 的數(shù)據(jù)。對(duì)于僅包含固定長(zhǎng)度數(shù)據(jù)的行, 以下值為 true。
數(shù)據(jù)行第一個(gè)字節(jié)的第一個(gè)十六進(jìn)制數(shù)字為 1, 表示不存在可變長(zhǎng)度列。(第一個(gè)十六進(jìn)制數(shù)字包括位4到 7; bits 6 和7總是 0, 如果不存在變長(zhǎng)列, 則位5也是0。位4始終為 1, 因此四位的值顯示為1。
數(shù)據(jù)行結(jié)束于空位圖之后, 它遵循固定長(zhǎng)度的數(shù)據(jù) (即, 圖6-5 中顯示的陰影部分不會(huì)存在于只有固定長(zhǎng)度數(shù)據(jù)的行中)。
每個(gè)數(shù)據(jù)行的總長(zhǎng)度是相同的。
具有任何可變長(zhǎng)度列的數(shù)據(jù)行有一個(gè)列偏移量數(shù)組, 每個(gè)非 NULL 可變長(zhǎng)度列都有一個(gè)2字節(jié)的條目, 指示列在其中結(jié)束的行中的位置。(術(shù)語(yǔ)偏移和位置不是完全可互換的。偏移量是基于0的, 而位置是基于1的。偏移量為7的字節(jié)位于行中的第八字節(jié)位置。)存儲(chǔ)具有 NULL 值的可變長(zhǎng)度列涉及一些特殊問(wèn)題, 如后面的 "null 和可變長(zhǎng)度列" 部分所討論的。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。