pg_freespacemap — анализ карты свободного пространства
Эта страница переведена при помощи нейросети GigaChat.
Модуль pg_freespacemap
предоставляет средство для проверки карты свободного пространства (FSM). Он предоставляет функцию под названием pg_freespace
, или, точнее говоря, две перегруженные функции. Эти функции показывают значение, записанное в карте свободного пространства для данной страницы или всех страниц в отношении.
По умолчанию использование ограничено суперпользователями и ролями с привилегиями роли pg_stat_scan_tables
. Доступ может быть предоставлен другим пользователям с помощью GRANT
.
Функции
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
), и они не поддерживаются полностью актуальными по мере вставки и обновления кортежей.
Для индексов отслеживаются полностью неиспользуемые страницы, а не свободное пространство внутри страниц. Поэтому значения не имеют смысла, важно лишь то, заполнена страница или пуста.
Пример вывода
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)