F.35. pg_freespacemap
Модуль pg_freespacemap предоставляет средства для исследования карты свободного пространства (FSM). В нём реализована функция pg_freespace, точнее, две перегруженных функции. Эти функции показывают значение, записанное в карте свободного пространства для данной страницы, либо для всех страниц отношения.
По умолчанию его использование разрешено только суперпользователям и членам роли pg_stat_scan_tables. Дать доступ другим можно с помощью GRANT.
F.35.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), по одному кортежу для каждой страницы в отношении.
Значения, хранимые в карте свободного пространства, не являются точными. Они округляются до 1/256 величины BLCKSZ (до 32 байт со значением BLCKSZ по умолчанию) и не поддерживаются в актуальном состоянии при каждом добавлении и изменении кортежей.
Для индексов отслеживаются полностью неиспользованные страницы, а не свободное пространство в страницах. Таким образом, эти значения отражают только то, что страница занята или свободна.
Примечание
Интерфейс был изменён в версии 8.4, в соответствии с нововведениями реализации FSM, которые появились в этой версии.
F.35.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.35.3. Автор
Исходную версию разработал Марк Кирквуд <[email protected]>. Для версии 8.4 с новой реализацией FSM код адаптировал Хейкки Линнакангас <[email protected]>