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_pagepage_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_pagetuple_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– полученные атрибуты будут распакованы по мере необходимости; если не задан, подразумеваетсяfalseheap_page_item_attrs (page BYTEA, rel_oid REGCLASS [, do_detoast BOOL])setof recordВозвращает неструктурированное содержимое кортежа в виде массива атрибутов, которые могут быть распакованы, если установлен флаг do_detoast. Функция похожа наheap_page_itemspage– образ страницы кучи, полученный в результате вызоваget_raw_page;do_detoast=true– полученные атрибуты будут распакованы по мере необходимости; если не задан, подразумеваетсяfalseheap_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– страница в виде значенияbyteabrin_metapage_info (page BYTEA)recordВозвращает сведения о метастранице индекса BRIN page– страница в виде значенияbyteabrin_revmap_data (page BYTEA)setof tidВыдает список идентификаторов кортежей со страницы сопоставлений зон индекса BRIN page– страница в виде значенияbyteabrin_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– страница в виде значенияbyteagin_page_opaque_info (page BYTEA)recordВыдает информацию из непрозрачной области индекса GIN (тип страницы) page– страница в виде значенияbyteagin_leafpage_items (page BYTEA)setof recordВыдает информацию о данных, хранящихся в странице индекса GIN на уровне листьев page– страница в виде значенияbytea -
функции для хеш-индексов:
Функция Возвращаемое значение Описание Аргументы hash_page_type (page BYTEAtextВозвращает тип страницы для заданной страницы хеш-индекса page– страница в виде значенияbyteahash_page_stats (page BYTEA)setof recordВозвращает информацию о странице группы или переполнения хеш-индекса page– страница в виде значенияbyteahash_page_items (page BYTEA)setof recordВозвращает информацию о данных, хранящихся на странице группы или переполнения хеш-индекса page– страница в виде значенияbyteahash_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 можно получить по ссылке.