日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《Microsoft Sql server 2008 Internals》读书笔记--第五章Table(4)

發布時間:2025/3/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Microsoft Sql server 2008 Internals》读书笔记--第五章Table(4) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《Microsoft Sql server 2008 Internals》索引目錄:

《Microsoft Sql server 2008 Internal》讀書筆記--目錄索引

?

?

上篇我們主要學習了元數據(metadata)的存儲及利用目錄視圖來查詢這些信息,今天,我們繼續學習數據頁(Data Pages)。

?數據頁(Data pages)是包含已經添加到數據庫的表中的用戶數據的結構。正如前面所看到的,數據頁有三類,每類數據頁以不同的方式存儲數據。復習一下,分別是in-row data pages、row-overflow data pages和LOB data pages。與其它類型的page一樣,data pages也是固定的8K大小或8192 bytes。它由三類組件組成:the page Header,data rows和the row offset array,如下圖所示:

1、Page Header

正如上圖所示,每個data page (除去96 bytes,還有8096 bytes存放data,row overhead和row offset)。你可以使用下面的DBCC Page命令來查看。

2、Data Rows for in-Rows

?Page Header的下面是row data,單個數據行最大可以存放8060 bytes的in-row data,這就是以前數據行不能超過8060限制的原因!有些行也可以在獨立的頁面(pages)中存放row-overflow data和LOB數據,存儲在一個給定的page變量中的行數取決于表結構及數據被存放的結構。一個擁有全部固定長度列的表每頁能存儲相同的行數。一個擁有可變長度列的表在頁中存放不同的行數以適應數據的實際長度。保持行長度盡量短,允許更多的行以適應頁面,減少了I/O,改善了高速緩存命中率(cache-hit ratio)。

因此,作為系統架構師或數據庫Designer,實在有必要了解這些啊。邀月深有體會。呵呵。程序很爛,是后天的,但數據結構不合理,那是先天的,兩者的殺傷力同樣驚人!

3、Row Offset Array

行偏移數組(row offset array) 是一個2-byte entries的塊(block),每個項說明對應數據行在頁開始的偏移,每行(row)有一個兩字節的項。盡管這些字節不會和數據一起存儲在行中,它們能影響適應page的行數。行偏移數組揭示了行在頁上的邏輯順序。比如,如果一個表有一個聚集索引,SQL Server按聚集索引鍵的順序存放數據。這并不意味著數據是物理按聚集索引鍵的順序存放,而是行偏移數組的Slot 0 指向聚集索引鍵序列的第一行(row),Slot 1 指向第二行,等等。當我們要快速查看實際頁的時候,這些行的物理位置可能在頁的任何位置。

?檢查數據頁(Exampling Data Pages)

?DBCC page命令可以幫我們查詢:MSDN文檔中中沒有提供此命令,微軟真的很那個啊。語法為:

DBCC?PAGE?({dbid?|?dbname},filenum,pagenum[,printopt])

其中,最后一個參數可以是0,1,2,3,默認為0,有興趣的朋友可以比較下這個參數的區別。我們作個示例:

DBCC?traceON(3604)
go
--查詢testdb數據庫的第一個文件的第157頁的數據頁
DBCC?PAGE?(testdb,1,157,1);
GO

查詢結果如下:

此外,還有更詳細的第X到第X行的數據顯示。更多信息,請查看:

?http://support.microsoft.com/?scid=kb%3Ben-us%3B83065&x=15&y=13http://blogs.msdn.com/sqlserverstorageengine/archive/2006/12/13/More-undocumented-fun_3A00_-DBCC-IND_2C00_-DBCC-PAGE_2C00_-and-off_2D00_row-columns.aspx

?http://support.microsoft.com/?scid=kb%3Ben-us%3B83065&x=8&y=12

查詢結果分為四部分:BUFFER、PAGE HEADER、DATA、和OFFSET TABLE(即真實的offset array) ,

? 注意,要想得到類似上圖的查詢的明細信息,必須選擇打開TRACEON開關,語法為:

DBCC?traceON(3604)
GO

關于DBCC TRACEON (Transact-SQL)的更多用法,請參考MSDN
http://msdn.microsoft.com/en-us/library/ms187329.aspx

比如你想得知系統硬件的相關信息,可以通過DBCC traceON(3205)打開跟蹤開關。
?

?數據行的結構(the structure of data rows)
一個表的通用結構如下圖所示:

?

?其中:狀態位A包含一個關于行的位圖信息。這個bits有如下含義:

??????Bit?0?Versioning?information;?in?SQL?Server?2008,?it's?always?0.
??????Bits?1?through?3?Taken?as?a?3-bit?value,?0?indicates?a?primary?record,?1?indicates?a?forwarded?record,?2?indicates?a?forwarded?stub,?3?indicates?an?index?record,?4?indicates?a?blob?fragment,?5?indicates?a?ghost?index?record,?and?6?indicates?a?ghost?data?record.
??????Bit?
4?Indicates?that?a?NULL?bitmap?exists;?in?SQL?Server?2008,?a?NULL?bitmap?is?always?present,?even?if?no?NULLs?are?allowed?in?any?column.
??????Bit?5?Indicates?that?variable-length?columns?exist?in?the?row.
??????Bits?
6?Indicates?that?the?row?contains?versionings?information.
??????Bits?
7?Not?used?in?SQL?Server?2008.
狀態位B字段中只使用一位,表示該記錄是一條備份轉發記錄。

下表顯示了表數據行的存儲信息:

Information

Mnemonic

Size

Status Bits A

TagA

1 byte

Status Bits B (not used in SQL Server 2008)

TagB

1 byte

Fixed-length size

Fsize

2 bytes

Fixed-length data

Fdata

Fsize --4

Number of columns

Ncol

2 bytes

NULL bitmap(1 byte for each column in table; 1 indicates that the corresponding column is NULL)

Nullbits

Ceiling (Ncol / 8)

Number of variable-length columns

VarCount

2 bytes

Variable column offset array

VarOffset

2 * VarCount

Variable-length data

VarData

VarOff[VarCount]
-- (fsize + 4 + Ceiling
(Ncol / 8) + 2 * VarCount)

?

有趣的是,當你創建一個表的時候,固定長度的列是先被存儲的,比如這樣一個語句

CREATE?TABLE?dbo.Demotable2010(?
???????????????
int?PKID,not?null
???????????????emp_fname??
varchar(10)???NOT?NULL,?
???????????????phone??????
char(12)??????NOT?NULL,?
???????????????job_level??
smallint??????NOT?NULL?
);

首先存儲的是pkid,再是phone,job_level,最后才是?emp_fname,因為它是可變長度的。

后一篇我們將繼續學習固定長度的行和可變長度的行的存儲。真累啊!

總結

以上是生活随笔為你收集整理的《Microsoft Sql server 2008 Internals》读书笔记--第五章Table(4)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲丝袜色图 | 又色又爽又黄 | 久久er99热精品一区二区介绍 | 91网站大全 | 美女黄视频在线观看 | 在线免费国产 | 日本一区二区三区久久久久 | 国产 丝袜 欧美中文 另类 | 麻豆视频黄色 | 日韩九九九 | 波多野结衣乳巨码无在线观看 | 四虎黄色影视 | 国产九色 | 99热在线看 | 国产精品第12页 | 国产sm调教一区二区 | 日日夜夜草 | 免费在线看污片 | 欧洲精品在线播放 | 久久合合| 国产日韩精品在线 | 欧美三级大片 | 午夜剧场免费看 | 少妇高潮一区二区三区在线 | 欧美 日韩 综合 | av一区二| 99少妇| 欧美成人黄色网 | 国产视频h | 日本韩国在线播放 | 中文字幕乱码一区二区 | 久久精品国产99国产 | 动漫精品一区一码二码三码四码 | 欧美日韩亚洲国产一区 | 樱花影院电视剧免费 | xxxxwww一片 | 国产18禁黄网站免费观看 | 亚洲精品一区二区三区区别 | 欧美日韩免费一区二区三区 | 动漫av一区 | 国产suv精品一区二区6 | 使劲插视频 | 国产性猛交╳xxx乱大交 | 亚洲网址在线观看 | 乱老熟女一区二区三区 | 欧美第二页 | 香蕉久草| 日本亚洲综合 | 亚州综合 | 天天操好逼 | www.免费av| 一二三不卡视频 | www.99热| 91视频一区 | 中文字幕不卡 | 毛片在哪里看 | 六月色 | 中文字幕一区二区av | 中文字幕日韩电影 | 亚洲理论片在线观看 | 操人视频免费 | 懂色av蜜臀av粉嫩av喷吹 | 国产精品蜜 | 伊人蕉久 | 欧美福利片在线观看 | 久久网站免费看 | 欧美一区二区免费电影 | 久久天天东北熟女毛茸茸 | 日本a级大片 | 六月丁香婷婷综合 | 久久久国产免费 | 在线观看国产免费av | 午夜刺激视频 | 波多野结衣在线一区 | 日女人免费视频 | 亚洲污网站 | 日韩久草| 亚洲一级片网站 | 99热自拍偷拍 | 成人在线免费视频播放 | 亚洲a∨无码无在线观看 | 国产伦视频 | 秘密基地免费观看完整版中文 | 国产精品100 | 成人在线免费看视频 | 国产精品h | 国产欧美亚洲一区 | 一区在线观看 | 少女视频的播放方法 | av一级二级| 朱竹清到爽高潮痉挛 | 老司机午夜免费精品视频 | 欧洲精品久久久久毛片完整版 | 国产乱码久久久久久 | 好爽又高潮了毛片 | 亚洲在线播放 | 99这里都是精品 | 特黄aaaaaaaaa毛片免费视频 | 在线观看污视频网站 |