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

Ограничения OrioleDB

В текущей реализации движка хранения OrioleDB существует ряд ограничений, обусловленных особенностями его реализации и текущим уровнем поддержки функциональных возможностей СУБД.

При эксплуатации продукта с использованием OrioleDB необходимо учитывать следующие ограничения:

  1. Движок хранения OrioleDB не обеспечивает полноценную поддержку уровня изоляции транзакций SERIALIZABLE. Транзакции могут быть запущены с использованием данного уровня изоляции, но его применение не рекомендуется из-за возможной нестабильной работы механизма сериализации, включая зависание транзакций. Для обеспечения корректной работы рекомендуется использовать уровни изоляции READ COMMITTED или REPEATABLE READ, поддерживаемые движком OrioleDB.

  2. Совместимость утилит и расширений:

    • Расширения, несовместимые с OrioleDB:

      • pg_probackup;
      • ptrack;
      • psql_logical_slot_rewind;
      • secret_dump;
      • pg_repack.
      примечание

      Расширения данной группы не поддерживаются в базе данных, содержащей объекты, использующие метод доступа OrioleDB. Наличие в базе данных хотя бы одной таблицы с методом доступа OrioleDB является основанием для ограничения использования таких расширений. Ограничение не зависит от значения параметра default_table_access_method: даже если в качестве метода доступа по умолчанию указан heap, использование расширения не поддерживается при наличии в базе данных таблиц OrioleDB.

    • Расширения, доступные только для таблиц Heap:

      • timescaledb;
      • citus;
      • pgvector;
      • RUM;
      • BLOOM;
      • fasttrun;
      • pg_outline;
      • pgtt;
      • pg_squeeze.
      примечание

      Расширения данной группы могут использоваться в базе данных, содержащей одновременно таблицы Heap и OrioleDB. При этом функциональность расширения поддерживается только для таблиц, использующих метод доступа Heap. Для таблиц OrioleDB использование таких расширений не поддерживается. Возможность создания и использования объектов расширения в отношении конкретной таблицы определяется ее методом доступа, в том числе установленным по умолчанию значением default_table_access_method.

  3. Не поддерживаются изменения типа данных столбца с одного типа переменной длины на другой совместимый тип без физического перестроения отношения. Выполнение такой операции сопровождается перестроением отношения.

  4. Не поддерживается вычисление и проверка контрольных сумм страниц для файлов отношений, использующих движок хранения OrioleDB.

  5. При работе с утилитой резервного копирования CopyWala рекомендуется отключить параметр verify_page_checksums в конфигурационном файле CopyWala из-за отсутствия поддержки контрольных сумм в OrioleDB.

  6. При работе с отношениями OrioleDB функции pg_orphaned:

    • не обрабатывают служебные heap-файлы, создаваемые при создании таблиц и первичных индексов. В результате такие файлы не включаются в результаты поиска и не участвуют в операциях перемещения и удаления (для их обработки используйте pg_orphaned);
    • обрабатывают файлы .map независимо от наличия соответствующего файла данных. В текущей реализации файлы .map отображаются, перемещаются и удаляются даже в случаях, когда соответствующий файл данных отсутствует.
  7. Восстановление базы данных из архивного файла с помощью утилиты pg_restore должно выполняться строго в однопоточном режиме. При запуске утилиты параметр --jobs должен быть установлен в значение 1. Попытка восстановления в многопоточном режиме (--jobs > 1) приводит к ошибке выполнения и аварийному прерыванию процесса.

  8. Утилита pgcopydb не поддерживает копирование таблиц OrioleDB, содержащих глобальные первичные ключи. Попытка миграции такой таблицы завершится ошибкой.

  9. Утилита pg_dump не поддерживает восстановление таблиц OrioleDB, содержащих глобальные первичные ключи.

  10. Параллельное построение индексов. Несмотря на возможность включения соответствующего конфигурационного параметра, индексы OrioleDB всегда строятся в однопоточном режиме. Настройки параллелизма игнорируются механизмом хранения.

  11. Требования к методу доступа при инициализации. Процесс, выполняемый утилитой anon для создания системных каталогов собственной схемы, должен использовать стандартный метод доступа Heap. Явное указание метода доступа OrioleDB в конфигурационном файле или командной строке во время выполнения команды anon init недопустимо и приведет к ошибке.

  12. Утилита pg_amcheck не поддерживает верификацию целостности глобальных индексов, использующих метод доступа OrioleDB.

  13. На данном этапе не поддерживаются команда CLUSTER и типы идентификатора репликации REPLICA IDENTITY INDEX/NOTHING. Данные ограничения обусловлены архитектурой хранения OrioleDB на основе B-tree.

  14. Создание базы данных из шаблона template1, содержащего объекты OrioleDB (таблицы, индексы или расширения), не поддерживается.

  15. Не используйте pg_hint_plan для принудительного выбора Bitmap Scan при работе с таблицами OrioleDB, поскольку данный тип сканирования не поддерживается методом доступа OrioleDB (orioledb_scan_bitmap_next_tuple).

  16. В индексных выражениях OrioleDB поддерживаются только запросы без ссылок на отношения, обращение к другим таблицам не поддерживается.

  17. При использовании таблиц OrioleDB данные статистики, отображаемые расширением pg_profile, могут обновляться с задержкой и не отражать актуальное состояние на момент формирования отчета.

  18. Не поддерживается механизм shared_pool с таблицами Oriole.

  19. На данном этапе не поддерживается утилита tde_disabler при работе с таблицами OrioleDB.

  20. Не следует использовать утилиту pg_dump в условиях partitioned_table_inherit_default_am = on.