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