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
Все функции модуля доступны только суперпользователю.
Примеры использования функций модуля представлены на официальной странице: https://www.postgresql.org/docs/13/pageinspect.html.
Дополнительную информацию по поставляемому модулю pageinspect можно получить по ссылке.