SQL Server :理解Page Free Space (PFS) 頁

來源:互聯網
上載者:User

標籤:

原文:SQL Server :理解Page Free Space (PFS) 頁

我們已經討論了GAM與SGAM頁,資料頁(Data Page) ,現在我們來看下頁面自由空間頁(Page Free Space (PFS) )。

PFS在資料檔案裡是第2頁(頁號1,頁號從0開始),接在檔案頭(file header,頁號0)後。GAM與SGAM是用來跟蹤區分配情況,而PFS頁是用來跟蹤頁分配層級(page level allocation)。當分配頁時,資料庫引擎使用GAM與SGAM來確定有可用頁的區。一旦資料庫引擎找到有可用頁的區,它使用PFS頁來確定在那個區裡未分配的頁,頁裡可用空間量是多少。可用空間只對頁儲存LOB值(例如text/image, varchar(max), nvarchar(max), varbinary(max), row overflow data)或堆資料頁時跟蹤。預設情況下,LOB資料儲存在獨立的頁,只通過在資料頁保留一個指向獨立頁的指標。在有可用閒置頁裡資料才可以被儲存。對於索引頁來說,資料應該和索引順序一樣儲存,所以沒有插入記錄指標的說法。也就沒有必要在索引裡跟蹤可用空間。

GAM和SGAM都有位元影像,但是PFS頁只有位元組圖。在PFS頁區間它為每頁保留1位。一個PFS頁可以儲存8088頁的可用空間使用資訊。

在每位元組的每一位代表資訊如下:

  • 第0-2位:在頁裡有多少可用空間
    • 0x00:空的,未使用
    • 0x01:1%-50%被佔用
    • 0x02:51%-80%被佔用
    • 0x03:81%-95%被佔用
    • 0x04:96%-100%被佔用
  • 第3位(0x08):頁裡是否有1條或多條鬼影記錄(ghost records)
  • 第4位(0x10):當前頁是IAM頁嗎?
  • 第5位(0x20):當前頁是混合頁嗎?
  • 第6位(0x40):當前頁是已指派嗎?
  • 第7位:未使用

 我們來看一個具體的例子:建立一個資料庫,並使用DBCC PAGE命令查看PFS頁的資訊:

1 CREATE DATABASE PFSdb2 GO3 USE PFSdb4 GO5 DBCC TRACEON(3604)6 GO7 DBCC PAGE(PFSdb,1,1,3)

........

可以看到,自180頁到287頁空間沒分配了。

我們往表裡插入點資料,再用DBCC PAGE查看下PFS頁的資訊:

1 SELECT * INTO SalesOrderHeaderTest FROM AdventureWorks2008R2.Sales.SalesOrderHeader2 DBCC TRACEON(3604)3 GO4 DBCC PAGE(PFSdb,1,1,3)

......

可以看到從288頁到1311頁有新頁添加。

我們現在把表drop掉,再看看PFS頁的資訊:

......

可以看到剛才被分配的頁現在變成未分配了,但是空間還是100%被佔用。這是因為在頁沒有被重新分配前,PFS位元組沒有被完全重設。在重新分配時,資料庫引擎只重設分配狀態位,這可以讓資料庫引擎在復原重新分配時,通過重設分配狀態位即可。

 

SQL Server :理解Page Free Space (PFS) 頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.