
PFS(Page Free Space),也叫頁面自由空間,該頁面用來跟蹤一個文件中每一個特定的頁面的利用率情況。一個文件中第二個頁面(頁碼1)就是PFS頁面,該頁面的每個 字節都記錄了相應頁面的分配情況、頁面類型、是否IAM頁、是否包含刪除記錄、以及空間利用率信息;PFS能夠管理和跟蹤8088個頁面的使用情況,即接 近64M的空間,以后每8088個頁面將再出現一次。
讓我們首先了解一下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%。
<style type="text/css"></style>