支援的版本:目前 (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

根據 blkno 指定的關係頁面,傳回該頁面上的可用空間量。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 的原始版本 。Heikki Linnakangas 在版本 8.4 中重新編寫,以適應新的FSM實作

提交更正

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