儲存引擎揭秘 基本結構之三 區

2021-09-30 08:52:51 字數 1795 閱讀 9420

儲存引擎揭秘:基本結構之三——區

正文:前面的文章我介紹了資料檔案中的頁,包括頁結構和一些頁型別。現在我想解釋一下頁是如何組織成區(

extent

)的。乙個區是由資料檔案中

8個連續的頁組成。區從資料檔案頭部開始,並且總是

64k對齊(即:

8頁對齊)。區及其屬性在

sql server 2000

和2005

中是一模一樣的。

sql server

中有兩種型別的區:混合區和統一區。

混合區

分配給任意一條

iam鏈(

sql server 2000

中的乙個索引或者是

2005

中的分配單元)的前

8個頁的分配單位是單個頁,這種頁被稱為混合頁。就是說每次分配的是乙個單獨的頁而不是乙個區。這樣便允許非常小的表花費最小數量的空間。一旦一條

iam鏈跨過了前

8頁的門檻,以後便分配統一區,再也不會分配混合頁了。

從混合區中分配來的混合頁,不需要分配給特定的

iam鏈。因為這些區會被全域性分配跟蹤(通過

gam頁),所以不會分配給乙個

iam鏈的。混合區中若還有沒分配的頁,該區同時會被

sgam

頁跟蹤。當需要分配乙個混合頁,系統就會檢查

sgam

頁是否還有這樣的區。如果沒有的話,就會分配乙個新的混合區,並從中分配一頁,然後這個區就被

sgam

頁跟蹤直到所有的頁被分配。

因為混合區不會被分配給乙個特定的

iam鏈,這就是說它可能分配給

8個不同的

iam鏈。不管有多少頁被分配給

iam鏈,

iam頁本身總是混合頁。這就是說乙個混合區可有多種頁型別,包括

iam頁、資料頁、索引頁或文字頁。

統一區

一旦跨過了

8頁的門檻,以後就從統一區上分配給

iam鏈了。這就是說一次分配乙個區給一條

iam鏈,並在

iam鏈上的

iam頁上標明——不管是誰對映該區所在的

gam區間的。該區同時會被相關的的

gam頁跟蹤是否已分配,這樣其它的

iam鏈就不會再分配它了。

乙個統一區的所有頁必須分給同一條

iam鏈。然後,它們不需要是同一型別的頁。比如,乙個聚集索引會同時有資料和索引頁。當乙個區被分配給

iam鏈時,該區中的頁並不是一次全被分配掉的(除非是大型資料操作),這些頁通常是按需分配,每頁的分配情況有

pfs頁跟蹤。

當乙個統一區的所有頁都被釋放,那麼區本身就從擁有它的

iam鏈中釋放了,並且可以再次分配給其他的

iam鏈,或者成為混合區。

為備份跟蹤變化的區

系統中有兩個地方用來跟蹤變化的區: 1.

自上次完整備份以來所有改變的區會有相關的差異點陣圖頁(

differential bitmap page

)跟蹤。這樣差異備份時便可以知道哪些區需要備份而不是備份整個資料庫了。當下次完整備份時所有的差異點陣圖頁都被復位。 2.

自上次完整、差異或日誌備份以來乙個區在

bulk-logged

恢復模式下發生了大日誌操作,會有相關的最小日誌點陣圖頁(

minimally-logged bitmap page

)跟蹤。大日誌操作後的任何日誌備份就會包含所有這些跟蹤的區。當下次備份時,所有的最小日誌點陣圖頁都會被復位。

儲存引擎揭秘 基本結構之一 記錄

儲存引擎揭秘 基本結構之一 記錄 本週我將發表一系列 sql server 中用來儲存資料和跟蹤分配的基本結構。大部分文章其實當初我在 teched2006 上開博時便發表過,但是現在我想更清晰地描述它,並使用 dbcc page 來檢查各種結構。那麼,什麼是記錄?簡單地說,一條記錄就是物理儲存的表...

儲存引擎揭秘 基本結構之二 頁

儲存引擎揭秘 基本結構之二 頁 繼續儲存引擎揭秘系列,今天討論頁結構。頁是用來儲存記錄的。乙個頁是資料庫檔案中的乙個 8192 位元組段。頁在資料檔案中開始於 0位元組,並按 8192 位元組對齊。下面是乙個頁的基本結構圖 頁頭部 頁頭部大小為 96位元組。在這部分我最想做的事是使用 dbcc pa...

示波器基本原理之三 儲存深度

整理自keysight官網資料 採集儲存器是示波器的重要組成部分。在簡易的示波器中,採集儲存器是由乙個負責採集模擬訊號的前端組成 隨後將這個訊號傳送到模數轉換器進行數位化處理。在數位化之後,訊號的資訊會被儲存到儲存器 採集儲存器 中,然後進行處理和繪製 顯示。示波器的採集儲存器與取樣率直接掛鉤。儲存...