lntlctww 发表于 2009-12-6 09:18:24

(SQL Server存儲結構)

4.9 Units of storage(存儲單位) (Page 102)

一個數據庫是邏輯分頁(logical pages)的集合,每個分頁的大小是8KB,這個大小是固定的不能被調整。分頁是數據庫的基本存儲單位,也是I/O與鎖定(Locking)的一種單位(I/O與Locking還有其它的單位)。
表與索引由數據庫頁(database page)組成,數據庫頁以段(extent)的方式分配給表和索引。
一個段由8個分頁組成(64KB)。SQL Server的段有兩種類型:制式的段(uniform extent)與混合的段(mixed extent)。一個制式的段隻能分配給一個數據庫對象,而一個混合的段則可給最多分配給8個數據庫對象,即一個頁可以也隻可以分配給一個數據庫對象。
SQL Sever使用混合段的原因是避免一次性分配一個段給一個過小的表。當某個表已被分配了8個分頁並且需要更多的空間時,制式的段將會分配給它。
使用系統存儲過程sp_spaceused可以查看某個表空間分配與使用狀況。既使某個表沒有創建索引,sp_spaceused的index_size欄位依然會返回8KB的索用佔用空間,這是因為SQL Server的每個表都會被分配一個分頁用來存儲一個叫做IAM(Index Allocation Map)的結構。
4.10 Database Pages(數據庫分頁)
1.分頁內部結構

用來儲存資料行(table rows)的分頁叫做數據頁(data page),存儲索引信息的分頁叫做索引頁(index page);如果一個表還包含TEXT或者IMAGE的數據類型,那麼這種欄位將會存儲在TEXT頁或者IMAGE頁中;其它的分頁類型有Global Allocation Map(GAM頁), Page Free Space(PFS頁)以及Index Allocation Map(IAM頁)。

一個數據頁(data page)的內部結構如下圖所示(Figure 4.16)。每個數據頁都包含一個固定的96 byte的數據頁頭(page header),數據頁頭包含的信息有:頁號(page number),指向它的前頁與後頁的指針(如果有的話),以及該數據頁所屬於的對象ID(object ID)(注: 對象ID即是數據頁所屬的文件ID)。
除了每個數據行,數據頁上還有一個叫做行偏移量表(row offset table)的結構。行偏移量表由大小為2個字節的項目組成。每個項目記錄一個資料行的行號(row number)以及該資料行的偏移量字節地址(offset byte address)。行偏移量表的第一行的字節偏移量(byte offset)為96,這是大小為96KB的頁頭。第二行是116,這是假設資料行的大小為20 byte,則20+96=116,第三行為136,就是96+20+20得來。行偏移量表基本上提供了一個定位資料行的間接方式。這個非常重要,因為非聚集索引可能在它們的葉級索引頁中包含指向資料行的指針。這樣的指針叫做行ID(Row ID),由文件ID(File ID),數據庫分頁號(Database page number)以及 行號(row number)組成。在圖4.16中,最靠近頁頭的行ID由分頁號23行號0組成。

由於行ID以這樣的方式構成,所以,當新增或刪除引起資料行在表中的位置改變時,該資料行的行ID無需變更,唯一需要變更的是行偏移量表對應項目的偏移量地址。

san123456789 发表于 2009-12-6 12:16:33

支持一下

gsjyao 发表于 2009-12-7 08:44:25

顶!谢谢分享!

lhw8033 发表于 2009-12-7 13:48:55

台湾人还是香港人?看得太费力!

rainhe 发表于 2009-12-7 14:00:01

他的系统可能是繁体的,有可能是公司的电脑。

lyw4682 发表于 2009-12-7 14:11:00

学习学习!!!!!!!!!!!

GTXsteven 发表于 2009-12-7 19:01:23

顶!谢谢分享!

dpb2000 发表于 2009-12-15 10:47:29

顶,先收藏了,慢慢研究

maxshot 发表于 2009-12-22 12:45:04

繁体的,有点别扭

yyssyiyong 发表于 2009-12-22 13:17:31

虽然是繁体,基本还可以看的清楚.

shinobiyan 发表于 2010-3-1 16:21:49

学学 不错啊

cjteam 发表于 2010-10-18 01:09:08

还是习惯看简体,谢谢楼主提供资料

时光啊时光 发表于 2014-5-27 13:03:28

谢了这个很有帮助啊
页: [1]
查看完整版本: (SQL Server存儲結構)