主頁(yè) > 知識(shí)庫(kù) > SQL Server誤區(qū)30日談 第6天 有關(guān)NULL位圖的三個(gè)誤區(qū)

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

熱門(mén)標(biāo)簽:400電話申請(qǐng)需要開(kāi)戶費(fèi)嗎 北京辦理400電話多少 智能語(yǔ)音外呼系統(tǒng)哪個(gè)牌子好 山西語(yǔ)音外呼系統(tǒng)價(jià)格 威海智能語(yǔ)音外呼系統(tǒng) 重慶防封電銷機(jī)器人供應(yīng)商 溫州語(yǔ)音外呼系統(tǒng)代理 南京電銷外呼系統(tǒng)運(yùn)營(yíng)商 西安青牛防封電銷卡
這樣還能減少CPU緩存命中失效的問(wèn)題(點(diǎn)擊這個(gè)鏈接來(lái)查看CPU的緩存是如何工作的以及MESI協(xié)議)。下面讓我們來(lái)揭穿三個(gè)有關(guān)NULL位圖的普遍誤區(qū)。

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

正確

就算表中不存在允許NULL的列,NULL位圖對(duì)于數(shù)據(jù)行來(lái)說(shuō)會(huì)一直存在(數(shù)據(jù)行指的是堆或是聚集索引的葉子節(jié)點(diǎn))。但對(duì)于索引行來(lái)說(shuō)(所謂的索引行也就是聚集索引和非聚集索引的非葉子節(jié)點(diǎn)以及非聚集索引的葉子節(jié)點(diǎn))NULL位圖就不是一直有效了。

下面這條語(yǔ)句可以有效的證明這一點(diǎn):
復(fù)制代碼 代碼如下:

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

你可以通過(guò)我的博文:Inside The Storage Engine: sp_AllocationMetadata - putting undocumented system catalog views to work.來(lái)獲得sp_allocationMetadata 的實(shí)現(xiàn)腳本。

    讓我們通過(guò)下面的script來(lái)分別查看在堆上的頁(yè)和非聚集索引上的頁(yè):

復(fù)制代碼 代碼如下:

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

首先讓我們來(lái)看堆上這頁(yè)Dump出來(lái)的結(jié)果
復(fù)制代碼 代碼如下:

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


再來(lái)看非聚集索引上的一頁(yè)Dump出來(lái)的結(jié)果:
復(fù)制代碼 代碼如下:

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


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

錯(cuò)誤

當(dāng)NULL位圖存在時(shí),NULL位圖會(huì)給記錄中的每一列對(duì)應(yīng)一位,但是數(shù)據(jù)庫(kù)中最小的單位是字節(jié),所以為了向上取整到字節(jié),NULL位圖的位數(shù)可能會(huì)比列數(shù)要多。對(duì)于這個(gè)問(wèn)題.我已經(jīng)有一篇博文對(duì)此進(jìn)行概述,請(qǐng)看:Misconceptions around null bitmap size.

誤區(qū) #6c:給表中添加額外一列時(shí)會(huì)立即導(dǎo)致SQL Server對(duì)表中數(shù)據(jù)的修改

錯(cuò)誤

只有向表中新添加的列是帶默認(rèn)值,且默認(rèn)值不是NULL時(shí),才會(huì)立即導(dǎo)致SQL Server對(duì)數(shù)據(jù)條目進(jìn)行修改??傊?,SQL Server存儲(chǔ)引擎會(huì)記錄一個(gè)或多個(gè)新添加的列并沒(méi)有反映在數(shù)據(jù)記錄中。關(guān)于這點(diǎn),我有一篇博文更加深入的對(duì)此進(jìn)行了闡述:Misconceptions around adding columns to a table.
您可能感興趣的文章:
  • 使用jQueryMobile實(shí)現(xiàn)滑動(dòng)翻頁(yè)效果的方法
  • jquery實(shí)現(xiàn)圖片翻頁(yè)效果
  • jquery實(shí)現(xiàn)的點(diǎn)擊翻書(shū)效果代碼
  • jQuery實(shí)現(xiàn)手機(jī)版頁(yè)面翻頁(yè)效果的簡(jiǎn)單實(shí)例

標(biāo)簽:宜春 濟(jì)寧 中衛(wèi) 金昌 貸款群呼 河源 黃山 新余

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server誤區(qū)30日談 第6天 有關(guān)NULL位圖的三個(gè)誤區(qū)》,本文關(guān)鍵詞  SQL,Server,誤區(qū),30日談,第,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL Server誤區(qū)30日談 第6天 有關(guān)NULL位圖的三個(gè)誤區(qū)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于SQL Server誤區(qū)30日談 第6天 有關(guān)NULL位圖的三個(gè)誤區(qū)的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章