pg_freespacemap

Исследование карты свободного пространства (FSM).
Схема размещения: ext.
Модуль pg_freespacemap предоставляет средства для исследования карты свободного пространства (FSM, Free Space Map). В нем реализованы две перегруженные функции pg_freespace. Эти функции показывают значение, записанное в карте свободного пространства для данной страницы либо для всех страниц отношения.
ТипИмяВходные переменные функцииВыходные переменные функцииОписание
Функция
pg_freespacerel regclass IN, blkno bigint INint2Возвращает объем свободного пространства на странице для отношения, заданного параметром blkno, согласно FSM
Функция
pg_freespacerel regclass IN, blkno OUT bigint, avail OUT int2Набор кортежей blkno bigint, avail int2, по одному кортежу для каждой страницы в отношенииВыдает объем свободного пространства на каждой странице отношения, согласно FSM
Значения, хранимые в карте свободного пространства, не являются точными. Эти значения округляются до 1/256 величины BLCKSZ (до 32 байт со значением BLCKSZ по умолчанию) и не поддерживаются в актуальном состоянии при каждом добавлении и изменении кортежей.
Для индексов отслеживаются только полностью неиспользованные страницы. Вместо оценки объема несвободного пространства, значения отражают, занята страница в целом или свободна.

Ограничения

По умолчанию использование модуля разрешено только суперпользователям и членам роли pg_stat_scan_tables. Дать доступ другим можно с помощью GRANT.

Использование модуля

  • Пример 1:
    SELECT * FROM pg_freespace('foo');
    Пример вывода результата запроса:
    Раскрыть type=sql
     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)
    
  • Пример 2:
    SELECT * FROM pg_freespace('foo', 7);
    Пример вывода результата запроса:
    Раскрыть type=sql
     pg_freespace
    --------------
             1216
    (1 row)
    

Ссылки на документацию разработчика

Дополнительную информацию по поставляемому модулю pg_freespacemap можно получить по ссылке.
Предыдущий раздел
pgcrypto
Следующий раздел
pg_hint_plan
Была ли страница полезной?