amcheck. Проверка логической целостности структуры отношений
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext.
Модуль amcheck содержит функции, которые позволяют проверять логическую целостность структуры отношений. Если нарушения структуры не обнаружены, функции отрабатывают без ошибок.
Функции модуля:
bt_index_checkпроверяет, соблюдаются ли в целевом индексе-B-tree различные инварианты;bt_index_parent_checkпроверяет, соблюдаются ли в целевом объекте, индексе-B-tree, различные инварианты.
Дополнительная фаза проверки добавляется, если для таблицы, связанной с отношением целевого индекса, аргумент
heapallindexedпроверяющих функций равенtrue.
Доработка
Не проводилась.
Установка
При наличии прав администратора СУБД включение модуля возможно выполнить вручную:
CREATE EXTENSION amcheck SCHEMA ext;
Настройка
Не требуется.
Использование модуля
-
bt_index_checkbt_index_check(index regclass, heapallindexed boolean) returns voidПример вывода результата выполнения запроса:
SELECT bt_index_check(index => c.oid, heapallindexed => i.indisunique),c.relname,c.relpagesFROM pg_index iJOIN pg_opclass op ON i.indclass[0] = op.oidJOIN pg_am am ON op.opcmethod = am.oidJOIN pg_class c ON i.indexrelid = c.oidJOIN pg_namespace n ON c.relnamespace = n.oidWHERE am.amname = 'btree' AND n.nspname = 'pg_catalog'-- Не проверять временные таблицы (они могут относиться к другим сеансам):AND c.relpersistence != 't'-- Функция может выдать ошибку без этих условий:AND c.relkind = 'i' AND i.indisready AND i.indisvalidORDER BY c.relpages DESC LIMIT 10; -
bt_index_parent_checkbt_index_parent_check(index regclass, heapallindexed boolean) returns void;
Ссылки на документацию разработчика:
Дополнительно поставляемый модуль amcheck: https://www.postgresql.org/docs/13/amcheck.html.