日韩性视频-久久久蜜桃-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)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 天堂在线视频免费观看 | 亚洲av日韩av永久无码下载 | 亚洲国产mv| 色av网 | 人妖粗暴刺激videos呻吟 | 综合网伊人 | 就要操就要射 | 久久综合日本 | 久久综合色视频 | 亚洲爱情岛论坛永久 | 成年人视频免费 | 日本不卡一区二区三区视频 | 一级黄色免费网站 | 欧美中文一区 | 亚洲精品欧美在线 | 放几个免费的毛片出来看 | 一本色道久久88加勒比—综合 | 国产资源第一页 | 蜜桃免费在线视频 | chinese中国性按摩hd | 小视频在线观看 | 婷婷激情图片 | 国产精品久久毛片 | 色多多视频在线 | 99精品在线看 | 国产精品久久久亚洲 | 已满18岁免费观看电视连续剧 | 欧洲影院 | 日本免费不卡一区二区 | 亚洲色p| 国产精品久久久久久久9999 | 色婷婷九月 | 精品在线免费视频 | av av片在线看 | julia一区二区 | 亚洲欲色| 国产在线欧美在线 | 黄色三级小说 | 福利视频h| 国产91综合一区在线观看 | 久久久高清视频 | 日日操狠狠操 | 国产一区欧美 | 国产成人无码精品久久久久 | 在线亚洲区 | 六月综合网 | 爱情岛论坛成人av | 色欲狠狠躁天天躁无码中文字幕 | 竹菊影视一区二区三区 | 蜜臀av免费在线观看 | 西西444www大胆无视频 | 中文字幕1页 | 成人精品一区二区三区电影黑人 | 8090理论片午夜理伦片 | 亲嘴扒胸摸屁股免费视频日本网站 | 五月天精品 | www.超碰| 黑人巨大精品欧美 | 亚洲第一成肉网 | 亚洲男女av | 四虎在线免费 | 日韩一区二区三区在线播放 | 国内一级视频 | 片多多在线观看 | 在线免费观看www | 国产视频第三页 | 2022天天操| 成人涩涩视频 | 中国极品少妇xxxx | 大又大又粗又硬又爽少妇毛片 | 五月激情六月婷婷 | 日本美女黄网站 | 国产日韩二区 | 高跟丝袜av | 欧美三级理论片 | 欧美精品色 | 日韩成人欧美 | 九九黄色片 | 国产精品久久久久久久久免费看 | 秋霞在线一区 | 老熟妇精品一区二区三区 | 亚洲va国产va天堂va久久 | 熟女少妇在线视频播放 | 91精品国产综合久久精品图片 | 久久婷婷国产麻豆91 | 国产网站免费观看 | 久久小视频 | 丁香啪啪 | a中文在线 | 日韩在线视频观看免费 | 91蝌蚪91九色| aa黄色片| 岛国av在线免费 | 国产成人精品视频 | 精品三级网站 | 午夜影院入口 | 天天插日日插 | 国产精品天天干 | 日韩孕交|