佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > SQL Server誤區(qū)30日談 第6天 有關NULL位圖的三個誤區(qū)

SQL Server誤區(qū)30日談 第6天 有關NULL位圖的三個誤區(qū)

熱門標簽:鐵路電話系統 呼叫中心市場需求 網站排名優(yōu)化 AI電銷 Linux服務器 百度競價排名 地方門戶網站 服務外包
這樣還能減少CPU緩存命中失效的問題(點擊這個鏈接來查看CPU的緩存是如何工作的以及MESI協議)。下面讓我們來揭穿三個有關NULL位圖的普遍誤區(qū)。

誤區(qū) #6a:NULL位圖并不是任何時候都會用到

正確

就算表中不存在允許NULL的列,NULL位圖對于數據行來說會一直存在(數據行指的是堆或是聚集索引的葉子節(jié)點)。但對于索引行來說(所謂的索引行也就是聚集索引和非聚集索引的非葉子節(jié)點以及非聚集索引的葉子節(jié)點)NULL位圖就不是一直有效了。

下面這條語句可以有效的證明這一點:
復制代碼 代碼如下:

CREATE TABLE NullTest (c1 INT NOT NULL);
CREATE NONCLUSTERED INDEX
NullTest_NC ON NullTest (c1);
GO
INSERT INTO NullTest VALUES (1);
GO
EXEC sp_allocationMetadata 'NullTest';
GO

你可以通過我的博文:Inside The Storage Engine: sp_AllocationMetadata - putting undocumented system catalog views to work.來獲得sp_allocationMetadata 的實現腳本。

    讓我們通過下面的script來分別查看在堆上的頁和非聚集索引上的頁:

復制代碼 代碼如下:

DBCC TRACEON (3604);
DBCC PAGE (foo, 1, 152, 3); -- page ID from SP output
where Index ID = 0
DBCC PAGE (foo, 1, 154, 1); -- page ID from SP output
where Index ID = 2
GO

首先讓我們來看堆上這頁Dump出來的結果
復制代碼 代碼如下:

Slot 0 Offset 0x60 Length 11
Record Type = PRIMARY_RECORD Record Attributes = NULL_BITMAP Memory Dump
@0x685DC060


再來看非聚集索引上的一頁Dump出來的結果:
復制代碼 代碼如下:

Slot 0, Offset 0x60, Length 13, DumpStyle BYTE
Record Type = INDEX_RECORD Record Attributes =
No null bitmap Memory Dump @0x685DC060


誤區(qū) #6b: NULL位圖僅僅被用于可空列

錯誤

當NULL位圖存在時,NULL位圖會給記錄中的每一列對應一位,但是數據庫中最小的單位是字節(jié),所以為了向上取整到字節(jié),NULL位圖的位數可能會比列數要多。對于這個問題.我已經有一篇博文對此進行概述,請看:Misconceptions around null bitmap size.

誤區(qū) #6c:給表中添加額外一列時會立即導致SQL Server對表中數據的修改

錯誤

只有向表中新添加的列是帶默認值,且默認值不是NULL時,才會立即導致SQL Server對數據條目進行修改??傊琒QL Server存儲引擎會記錄一個或多個新添加的列并沒有反映在數據記錄中。關于這點,我有一篇博文更加深入的對此進行了闡述:Misconceptions around adding columns to a table.
您可能感興趣的文章:
  • 使用jQueryMobile實現滑動翻頁效果的方法
  • jquery實現圖片翻頁效果
  • jquery實現的點擊翻書效果代碼
  • jQuery實現手機版頁面翻頁效果的簡單實例

標簽:崇左 銅川 衡水 黃山 蘭州 湘潭 湖南 仙桃

巨人網絡通訊聲明:本文標題《SQL Server誤區(qū)30日談 第6天 有關NULL位圖的三個誤區(qū)》,本文關鍵詞  ;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    新源县| 财经| 洛浦县| 罗田县| 洞头县| 北安市| 宾川县| 冷水江市| 宝丰县| 浮梁县| 大渡口区| 石台县| 榆中县| 吉隆县| 新龙县| 陆川县| 新泰市| 尼玛县| 连城县| 株洲县| 建平县| 来宾市| 正宁县| 科技| 日照市| 隆回县| SHOW| 湾仔区| 太仆寺旗| 三明市| 泊头市| 嘉兴市| 元谋县| 永修县| 西青区| 长沙市| 汽车| 寻乌县| 龙门县| 吐鲁番市| 长沙县|