SQL Server 2008儲存結構之PFS結構
讓我們首先了解一下PFS的頁面管理位元組的構造,管理單位為位元組,每位元組管理一個頁面。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
頁面是否分配 | 是否混合頁面 | 是否IAM頁面 | 是否幻影頁面 | 空間利用率 |
第0個bit為保留位元組,始終為0
第1個bit表示該頁面是否已分配,我們知道GAM頁用來管理區是否已分配,但一個區包含8個頁面,所以用該bit用來準確定位該區的某個頁面是否已分配出去了。
第2個bit表示該頁面是否混合分割槽的一個頁面。
第3個bit表示該頁面是否是一個IAM頁面。
第4個bit表示該頁面中是否包含幻影或已刪除記錄,這有助於SQL Server定期清理幻影或已刪除記錄。
第5~7個頁面表示該頁面的空間使用率情況。
• 0:表示該頁面為空
• 1:表示該頁面已使用1~50%
• 2:表示該頁面已使用51~80%
• 3:表示該頁面已使用81~95%
• 4:表示該頁面已使用96~100%
我們可以用dbcc page(testdb,1,1,2)來看一下PFS的頁面結構,BUFFER和PAGE HEADER再次就不做詳述了,PFS關於頁面分配的資訊是從第100個位元組開始的,最後四個位元組為系統保留位元組,總計管理8088頁。
其中頭四頁均為44,換算成2進位制即0100 0100,即為未分配(大概為保留頁的緣故),且為已分配完成的混合區或統一型別區,非IAM頁,且無幻影記錄,空間利用率96~100%。
4F09C070: 74706070 60606060 60707060 40404040 †tp`p`````pp`@@@@
4F09C080: 40404040 61706070 60606070 60306060 †@@@@ap`p```p`0``
4F09C090: 60217024 60706060 60606060 40203020 †`!p$`p``````@ 0
4F09C0A0: 20202820 60606060 60606070 60606060 † ( ```````p````
4F09C0B0: 70203020 30706070 70607060 70203060 †p 0 0p`pp`p`p 0`
4F09C0C0: 70203068 70607060 70607060 70607060 †p 0hp`p`p`p`p`p`
4F09C0D0: 70203060 60602020 60702030 20306070 †p 0``` `p 0 0`p
4F09C0E0: 60702830 60707070 60606070 60706070 †`p(0`ppp```p`p`p
4F09C0F0: 60706070 40404020 20202020 60706070 †`p`p@@@ `p`p
4F09C100: 60706060 64616070 60706070 60706070 †`p``da`p`p`p`p`p
4F09C110: 60700000 00000000 00000000 00000000 †`p..............
4F09C120: 00000000 00000000 00000000 00000000 †................
4F09DFF0: 00000000 00000000 00000000 00006000 †..............`.
最後讓我們用Internals Viewer外掛看一下PFS頁的全貌吧。
第七個頁面(頁碼6)被稱為差異變更(Differential Changed Map,DCM)頁面。它跟蹤一個檔案中的哪一個區在最新一次完全資料庫備份以後被修改過。SQL Server用在增量備份時只對已發生資料變更的分割槽進行增量備份即可。
第八個頁面(頁碼7)被稱為批次更改對映(Bulk Changed Map,BCM)頁面,該頁面當檔案中的一個區在最小量或批次記日誌操作中被使用時用到。就像GAM和SGAM頁面,DCM和BCM頁面針對它們代表的文 件區間中每一個區都有一個位元位相對應。這些頁面的常規間距為511 230個頁面。
此外關於資料庫在進行DML操作如何尋找合適的分割槽和頁面對資料進行處理還是留待後續介紹吧。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6517/viewspace-677128/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 2008儲存結構之IAM結構SQLServer
- SQL Server 2008儲存結構之GAM、SGAMSQLServerGAM
- SQL Server 2008 儲存結構之DCM、BCMSQLServer
- SQL Server2008儲存結構之物件儲存檢視SQLServer物件
- 理解SQL Server 2008索引的儲存結構YDSQLServer索引
- SQL Server2008儲存結構之基本系統檢視SQLServer
- SQL Server2008儲存結構之堆表、行溢位SQLServer
- 儲存結構
- PostgreSQL儲存引擎之page結構SQL儲存引擎
- JanusGraph -- 儲存結構
- CentOS 儲存結構CentOS
- SQL Server 2008的加密層次結構SQLServer加密
- SQL Server 索引結構SQLServer索引
- PostgreSQL儲存引擎之heap tuple結構SQL儲存引擎
- SQL Server2008無法修改表結構?SQLServer
- Redis儲存結構以及儲存格式Redis
- 圖的儲存結構
- 三種儲存結構
- 資料結構知識點--儲存結構與邏輯結構資料結構
- 線性表之順序儲存結構
- 線性表之鏈式儲存結構
- 【資料結構——圖和圖的儲存結構】資料結構
- MySQL InnoDB的儲存結構總結MySql
- InnoDB記錄儲存結構
- php圖的儲存結構PHP
- HBase 資料儲存結構
- redis 儲存結構原理 2Redis
- oracle物理儲存結構理解Oracle
- Oracle資料儲存結構Oracle
- SAP儲存地點結構
- SQL Server 索引結構及其使用SQLServer索引
- 讀取SQL Server 表結構SQLServer
- 【PHP資料結構】圖的概念和儲存結構PHP資料結構
- MySQL Innodb 儲存結構 & 儲存Null值 解析MySqlNull
- 儲存器的層次結構
- 圖(Graph)——圖的儲存結構
- 【RocketMQ】RocketMQ儲存結構設計MQ
- innodb表空間儲存結構