Перейти к основному содержимому

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