首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 儲存結構詳解:PFS 頁面與頁面空間追蹤

     編輯:關於SqlServer

PFS 頁面:頁面層級的空間管理者

PFS(Page Free Space,頁面自由空間)頁面是 SQL Server 用來追蹤資料庫檔案中每個頁面使用狀況的系統頁面。不同於 GAM/SGAM 以「區」為管理單位,PFS 以頁面為粒度,記錄每頁的配置狀態、類型、是否為 IAM 頁、是否包含鬼影記錄,以及空間使用率。

PFS 頁面位置與覆蓋範圍

  • 每個資料檔案的第 1 頁(頁碼 1)固定為第一個 PFS 頁面。
  • 單一 PFS 頁面可管理 8,088 個頁面(約 64 MB 空間)。
  • 之後每隔 8,088 頁會出現下一個 PFS 頁面,形成週期性結構。

PFS 管理位元組結構(每頁 1 位元組)

位元位置名稱說明
Bit 0保留永遠為 0
Bit 1頁面已配置1=已配置,0=未配置。補充 GAM/SGAM 以區為單位的粒度,精確到頁面層級。
Bit 2混合區頁面1=屬於混合區,0=非混合區(統一區或未配置)。
Bit 3IAM 頁面1=該頁為 IAM 頁面。
Bit 4鬼影/刪除記錄1=包含鬼影記錄,供背景執行緒清理。
Bit 5-7空間使用率3 位元編碼:
0=空頁
1=1~50%
2=51~80%
3=81~95%
4=96~100%

實戰觀察:DBCC PAGE 檢視 PFS

DBCC TRACEON(3604);
DBCC PAGE(TESTDB, 1, 1, 2); -- 檔案 1,第 1 頁(PFS),printopt=2 整體輸出

輸出中,PFS 管理資料從第 100 位元組開始,最後 4 位元組為系統保留,共管理 8,088 頁。前 4 預留頁的位元組值為 0x44(二進位 0100 0100),解讀為:

  • Bit 1=0:未配置(預留頁特性)
  • Bit 2=1:視為已配置完成的混合區/統一區
  • Bit 3=0:非 IAM 頁
  • Bit 4=0:無鬼影記錄
  • Bit 5-7=100 (二進位 4):空間使用率 96~100%

輔助工具:Internals Viewer

使用 SQL Internals Viewer 可視化 PFS 頁面,快速掌握數萬頁面的使用率分布,發現碎片化或空間浪費。

相關系統頁面補充:DCM 與 BCM

  • 第 6 頁(DCM,Differential Changed Map):追蹤自上次完整備份以來被修改過的區,支援差異備份僅備份變更區。
  • 第 7 頁(BCM,Bulk Changed Map):在大量記錄模式下,追蹤大量操作修改的區,供記錄備份識別需掃描的區。
  • 兩者同樣每 511,230 頁重複一次,位元對應每個區。

總結

PFS 是 SQL Server 頁面層級空間管理的核心,配合 GAM/SGAM 的區層級管理,構建了完整的兩層空間追蹤體系。理解 PFS 位元組結構,有助於診斷頁面碎片、鬼影記錄堆積、混合區使用效率等問題,也是深入掌握儲存引擎行為的關鍵一環。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved