2025年9月25日: PostgreSQL 18 釋出!
支援版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不再支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

F.27. pg_freespacemap — 檢查空閒空間對映圖 #

pg_freespacemap 模組提供了一種檢查 空閒空間對映圖 (FSM) 的方法。它提供了一個名為 pg_freespace 的函式,更確切地說,是兩個過載的函式。這些函式顯示了為給定頁面或關係中所有頁面在空閒空間對映圖中記錄的值。

預設情況下,使用許可權僅限於超級使用者和擁有 pg_stat_scan_tables 角色的使用者。可以使用 GRANT 將訪問許可權授予其他人。

F.27.1. 函式 #

pg_freespace(rel regclass IN, blkno bigint IN) returns int2

根據FSM.

pg_freespace(rel regclass IN, blkno OUT bigint, avail OUT int2)

顯示關係中每個頁面的空閒空間量,根據FSM。返回一對 (blkno bigint, avail int2) 元組,關係中的每個頁面對應一個元組。

空閒空間對映圖中儲存的值不是精確的。它們被舍入到 BLCKSZ 的 1/256,(在預設 BLCKSZ 下為 32 位元組),並且隨著元組的插入和更新,它們不會保持完全最新。

對於索引,跟蹤的是完全未使用的頁面,而不是頁面內的空閒空間。因此,這些值沒有實際意義,僅僅表示頁面是否在使用中或為空。

F.27.2. 示例輸出 #

postgres=# SELECT * FROM pg_freespace('foo');
 blkno | avail
-------+-------
     0 |     0
     1 |     0
     2 |     0
     3 |    32
     4 |   704
     5 |   704
     6 |   704
     7 |  1216
     8 |   704
     9 |   704
    10 |   704
    11 |   704
    12 |   704
    13 |   704
    14 |   704
    15 |   704
    16 |   704
    17 |   704
    18 |   704
    19 |  3648
(20 rows)

postgres=# SELECT * FROM pg_freespace('foo', 7);
 pg_freespace
--------------
         1216
(1 row)

F.27.3. 作者 #

最初版本由 Mark Kirkwood 編寫 。在 8.4 版本中重寫以適應新的FSM實現,由 Heikki Linnakangas 編寫

提交更正

如果您在文件中發現任何不正確、與您在使用特定功能時的經驗不符或需要進一步說明的內容,請使用 此表單 報告文件問題。