SQL Server誤區30日談 第6天 有關NULL位元影像的三個誤區

來源:互聯網
上載者:User

這樣還能減少CPU快取命中失效的問題(點擊這個連結來查看CPU的緩衝是如何工作的以及MESI協議)。下面讓我們來揭穿三個有關NULL位元影像的普遍誤區。

誤區 #6a:NULL位元影像並不是任何時候都會用到

正確

就算表中不存在允許NULL的列,NULL位元影像對於資料行來說會一直存在(資料行指的是堆或是叢集索引的葉子節點)。但對於索引行來說(所謂的索引行也就是叢集索引和非叢集索引的非葉子節點以及非叢集索引的葉子節點)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

誤區 #6b: NULL位元影像僅僅被用於可空列

錯誤

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

誤區 #6c:給表中添加額外一列時會立即導致SQL Server對錶中資料的修改

錯誤

只有向表中新添加的列是帶預設值,且預設值不是NULL時,才會立即導致SQL Server對資料條目進行修改。總之,SQL Server儲存引擎會記錄一個或多個新添加的列並沒有反映在資料記錄中。關於這點,我有一篇博文更加深入的對此進行了闡述:Misconceptions around adding columns to a table.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.