pageinspect

Исследование страниц баз данных на низком уровне.
Схема размещения: ext.
Модуль pageinspect предоставляет функции, которые позволяют исследовать страницы баз данных на низком уровне. Это может быть полезно для отладки.
Описание функций:
  • функции общего назначения:
    ФункцияВозвращаемое значениеОписаниеАргументы
    get_raw_page (relname TEXT, fork TEXT, blkno INT)
    byteaСчитывает указанный блок отношения с заданным именем и возвращает копию значения bytea. Это позволяет получить одну согласованную во времени копию блокаrelname – имя отношения;
    blkno – номер блока отношения;
    fork – слой:
    main — обратиться к основному слою данных;
    fsm — к карте свободного пространства;
    vm — к карте видимости;
    init — к слою инициализации
    get_raw_page (relname TEXT, blkno INT)
    byteaУпрощенная версия get_raw_page для чтения данных из основного слоя. Аналог get_raw_page (relname, 'main', blkno)relname – имя отношения;
    blkno – номер блока отношения
    page_header (page BYTEA)
    recordПоказывает общие для всех страниц кучи и индекса PostgreSQL поляpage – образ страницы, полученный в результате вызова get_raw_page
    page_checksum (page BYTEA, blkno INT4)
    smallintВычисляет контрольную сумму страницы в заданном блоке. Обеим функциям нужно передавать одинаковые номера, поскольку вычисление контрольной суммы зависит от номера блокаpage – образ страницы, полученный в результате вызова get_raw_page;
    blkno – номер блока
    fsm_page_contents (page BYTEA)
    textПоказывает внутреннюю структуру узла на странице FSMpage – образ страницы, полученный в результате вызова get_raw_page
  • функции кучи:
    ФункцияВозвращаемое значениеОписаниеАргументы
    heap_page_items (page BYTEA)
    setof record
    Описание полей можно найти в src/include/storage/itemid.h и src/include/access/htup_details.h (внешние ссылки)
    Показывает все указатели линейных блоков на странице кучи. Для используемых блоков также выводятся заголовки всех кортежей, независимо от того, были ли видны они в снимке MVCC в момент копирования исходной страницыpage – образ страницы кучи, полученный в результате вызова get_raw_page
    tuple_data_split (rel_oid OID, t_data BYTEA, t_infomask INTEGER, t_infomask2 INTEGER, t_bits TEXT [, do_detoast BOOL])
    BYTEA[]Разделяет данные кортежей на атрибуты так, как это происходит внутри сервераАтрибуты, возвращаемые функцией heap_page_items;
    do_detoast = true – полученные атрибуты будут распакованы по мере необходимости; если не задан, подразумевается false
    heap_page_item_attrs (page BYTEA, rel_oid REGCLASS [, do_detoast BOOL])
    setof recordВозвращает неструктурированное содержимое кортежа в виде массива атрибутов, которые могут быть распакованы, если установлен флаг do_detoast. Функция похожа на heap_page_itemspage – образ страницы кучи, полученный в результате вызова get_raw_page;
    do_detoast = true – полученные атрибуты будут распакованы по мере необходимости; если не задан, подразумевается false
    heap_tuple_infomask_flags (t_infomask INTEGER, t_infomask2 INTEGER)
    recordДекодирует значения t_infomask и t_infomask2, которые возвращает функция heap_page_items, и выдает массивы с именами флагов в понятном виде: один, перечисляющий все флаги по отдельности, а другой — комбинированные.
    Комбинированные флаги выводятся для тех макросов на уровне исходного кода, в которых объединяются значения нескольких битов, например, HEAP_XMIN_FROZEN.
    Описания выдаваемых имен флагов можно найти в src/include/access/htup_details.h
    Атрибуты, возвращаемые функцией heap_page_items
  • функции для индексов B-деревьев:
    ФункцияВозвращаемое значениеОписаниеАргументы
    bt_metap (relname TEXT)
    recordВыдает информацию о метастранице индекса B-деревоrelname – имя отношения
    bt_page_stats (relname TEXT, blkno INT)
    recordВыдает сводную информацию по единичным страницам B-дереваrelname – имя отношения;
    blkno – номер блока отношения
    bt_page_items (relname TEXT, blkno INT)
    setof recordВыдает подробную информацию обо всех элементах на странице индекса B-деревоrelname – имя отношения;
    blkno – номер блока отношения
    bt_page_items (page BYTEA)
    setof recordВыдает подробную информацию обо всех элементах на странице индекса B-деревоpage – страница в виде значения bytea
  • функции для индексов BRIN:
    ФункцияВозвращаемое значениеОписаниеАргументы
    brin_page_type (page BYTEA)
    textВозвращает тип страницы для заданной страницы индекса BRIN или выдает ошибку, если эта страница не является корректной страницей индекса BRINpage – страница в виде значения bytea
    brin_metapage_info (page BYTEA)
    recordВозвращает сведения о метастранице индекса BRINpage – страница в виде значения bytea
    brin_revmap_data (page BYTEA)
    setof tidВыдает список идентификаторов кортежей со страницы сопоставлений зон индекса BRINpage – страница в виде значения bytea
    brin_page_items (page BYTEA, index OID)
    setof record
    Возвращаемые столбцы соответствуют полям в структурах BrinMemTuple и BrinValues.
    Подробное описание: src/include/access/brin_tuple.h
    Выдает содержимое, сохраненное в странице данных BRINpage – страница в виде значения bytea;
    index – имя индекса
  • функции для индексов GIN:
    ФункцияВозвращаемое значениеОписаниеАргументы
    gin_metapage_info (page BYTEA)
    recordВыдает информацию о метастранице индекса GINpage – страница в виде значения bytea
    gin_page_opaque_info (page BYTEA)
    recordВыдает информацию из непрозрачной области индекса GIN (тип страницы)page – страница в виде значения bytea
    gin_leafpage_items (page BYTEA)
    setof recordВыдает информацию о данных, хранящихся в странице индекса GIN на уровне листьевpage – страница в виде значения bytea
  • функции для хеш-индексов:
    ФункцияВозвращаемое значениеОписаниеАргументы
    hash_page_type (page BYTEA
    textВозвращает тип страницы для заданной страницы хеш-индексаpage – страница в виде значения bytea
    hash_page_stats (page BYTEA)
    setof recordВозвращает информацию о странице группы или переполнения хеш-индексаpage – страница в виде значения bytea
    hash_page_items (page BYTEA)
    setof recordВозвращает информацию о данных, хранящихся на странице группы или переполнения хеш-индексаpage – страница в виде значения bytea
    hash_bitmap_info (index OID, blkno INT)
    recordПоказывает состояние бита в странице битовой карты для определенной страницы переполнения хеш-индексаindex – имя индекса;
    blkno – номер блока отношения
    hash_metapage_info (page BYTEA)
    recordВозвращает информацию, хранящуюся в метастранице хеш-индексаpage – страница в виде значения bytea

Ограничения

Все функции модуля доступны только суперпользователю.

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

Примеры использования функций модуля представлены на официальной странице: https://www.postgresql.org/docs/13/pageinspect.html.

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

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