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

Показывает внутреннюю структуру узла на странице FSM

page – образ страницы, полученный в результате вызова 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_items

page – образ страницы кучи, полученный в результате вызова 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 или выдает ошибку, если эта страница не является корректной страницей индекса BRIN

page – страница в виде значения bytea

brin_metapage_info (page BYTEA)

record

Возвращает сведения о метастранице индекса BRIN

page – страница в виде значения bytea

brin_revmap_data (page BYTEA)

setof tid

Выдает список идентификаторов кортежей со страницы сопоставлений зон индекса BRIN

page – страница в виде значения bytea

brin_page_items (page BYTEA, index OID)

setof record
Возвращаемые столбцы соответствуют полям в структурах BrinMemTuple и BrinValues.
Подробное описание: src/include/access/brin_tuple.h.

Выдает содержимое, сохраненное в странице данных BRIN

page – страница в виде значения bytea;
index – имя индекса

Функции для индексов GIN#

Функция

Возвращаемое значение

Описание

Аргументы

gin_metapage_info (page BYTEA)

record

Выдает информацию о метастранице индекса GIN

page – страница в виде значения 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

Доработка#

Доработка не проводилась.

Ограничения#

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

Установка#

При наличии прав администратора СУБД включение модуля выполняется запросом:

CREATE EXTENSION pageinspect SCHEMA ext;

Настройка#

Настройка не требуется.

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

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

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

Исходная документация по модулю pageinspect: https://www.postgresql.org/docs/15/pageinspect.html