pg_freespacemap. Исследование карты свободного пространства (FSM)
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext
.
Модуль pg_freespacemap
предоставляет средства для исследования карты свободного пространства (FSM, Free Space Map). В нем реализованы две перегруженные функции pg_freespace
. Эти функции показывают значение, записанное в карте свободного пространства для данной страницы либо для всех страниц отношения.
Тип | Имя | Входные переменные функции | Выходные переменные функции | Описание |
---|---|---|---|---|
Функция | pg_freespace | rel regclass IN, blkno bigint IN | int2 | Возвращает объем свободного пространства на странице для отношения, заданного параметром blkno , согласно FSM |
Функция | pg_freespace | rel regclass IN, blkno OUT bigint, avail OUT int2 | Набор кортежей blkno bigint, avail int2 , по одному кортежу для каждой страницы в отношении | Выдает объем свободного пространства на каждой странице отношения, согласно FSM |
Значения, хранимые в карте свободного пространства, не являются точными. Эти значения округляются до 1/256 величины BLCKSZ
(до 32 байт со значением BLCKSZ
по умолчанию) и не поддерживаются в актуальном состоянии при каждом добавлении и изменении кортежей.
Для индексов отслеживаются только полностью неиспользованные страницы. Вместо оценки объема несвободного пространства, значения отражают, занята страница в целом или свободна.
Доработка
Доработка не проводилась.
Ограничения
По умолчанию использование модуля разрешено только суперпользователям и членам роли pg_stat_scan_tables
. Дать доступ другим можно с помощью GRANT
.
Установка
При наличии прав администратора СУБД включение модуля выполняется запросом:
CREATE EXTENSION pg_freespacemap SCHEMA ext;
Настройка
Настройка не требуется.
Использование модуля
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)
SELECT * FROM pg_freespace('foo', 7);
Пример вывода результата запроса:
pg_freespace
--------------
1216
(1 row)
Ссылки на документацию разработчика
Исходная документация PosgreSQL по модулю pg_freespacemap: https://www.postgresql.org/docs/15/pgfreespacemap.html