Ограничения OrioleDB
В текущей реализации движка хранения OrioleDB существует ряд ограничений, обусловленных особенностями его реализации и текущим уровнем поддержки функциональных возможностей СУБД.
При эксплуатации продукта с использованием OrioleDB необходимо учитывать следующие ограничения:
-
Движок хранения OrioleDB не обеспечивает полноценную поддержку уровня изоляции транзакций
SERIALIZABLE. Транзакции могут быть запущены с использованием данного уровня изоляции, но его применение не рекомендуется из-за возможной нестабильной работы механизма сериализации, включая зависание транзакций. Для обеспечения корректной работы рекомендуется использовать уровни изоляцииREAD COMMITTEDилиREPEATABLE READ, поддерживаемые движком OrioleDB. -
Совместимость утилит и расширений:
-
Расширения, несовместимые с 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.
-
-
Не поддерживаются изменения типа данных столбца с одного типа переменной длины на другой совместимый тип без физического перестроения отношения. Выполнение такой операции сопровождается перестроением отношения.
-
Не поддерживается вычисление и проверка контрольных сумм страниц для файлов отношений, использующих движок хранения OrioleDB.
-
При работе с утилитой резервного копирования CopyWala рекомендуется отключить параметр
verify_page_checksumsв конфигурационном файле CopyWala из-за отсутствия поддержки контрольных сумм в OrioleDB. -
При работе с отношениями OrioleDB функции
pg_orphaned:- не обрабатывают служебные heap-файлы, создаваемые при создании таблиц и первичных индексов. В результате такие файлы не включаются в результаты поиска и не участвуют в операциях перемещения и удаления (для их обработки используйте
pg_orphaned); - обрабатывают файлы
.mapнезависимо от наличия соответствующего файла данных. В текущей реализации файлы.mapотображаются, перемещаются и удаляются даже в случаях, когда соответствующий файл данных отсутствует.
- не обрабатывают служебные heap-файлы, создаваемые при создании таблиц и первичных индексов. В результате такие файлы не включаются в результаты поиска и не участвуют в операциях перемещения и удаления (для их обработки используйте
-
Восстановление базы данных из архивного файла с помощью утилиты
pg_restoreдолжно выполняться строго в однопоточном режиме. При запуске утилиты параметр--jobsдолжен быть установлен в значение1. Попытка восстановления в многопоточном режиме (--jobs> 1) приводит к ошибке выполнения и аварийному прерыванию процесса. -
Утилита
pgcopydbне поддерживает копирование таблиц OrioleDB, содержащих глобальные первичные ключи. Попытка миграции такой таблицы завершится ошибкой. -
Утилита
pg_dumpне поддерживает восстановление таблиц OrioleDB, содержащих глобальные первичные ключи. -
Параллельное построение индексов. Несмотря на возможность включения соответствующего конфигурационного параметра, индексы OrioleDB всегда строятся в однопоточном режиме. Настройки параллелизма игнорируются механизмом хранения.
-
Требования к методу доступа при инициализации. Процесс, выполняемый утилитой
anonдля создания системных каталогов собственной схемы, должен использовать стандартный метод доступа Heap. Явное указание метода доступа OrioleDB в конфигурационном файле или командной строке во время выполнения командыanon initнедопустимо и приведет к ошибке. -
Утилита
pg_amcheckне поддерживает верификацию целостности глобальных индексов, использующих метод доступа OrioleDB. -
На данном этапе не поддерживаются команда
CLUSTERи типы идентификатора репликацииREPLICA IDENTITY INDEX/NOTHING. Данные ограничения обусловлены архитектурой хранения OrioleDB на основе B-tree. -
Создание базы данных из шаблона
template1, содержащего объекты OrioleDB (таблицы, индексы или расширения), не поддерживается. -
Не используйте
pg_hint_planдля принудительного выбора Bitmap Scan при работе с таблицами OrioleDB, поскольку данный тип сканирования не поддерживается методом доступа OrioleDB (orioledb_scan_bitmap_next_tuple). -
В индексных выражениях OrioleDB поддерживаются только запросы без ссылок на отношения, обращение к другим таблицам не поддерживается.
-
При использовании таблиц OrioleDB данные статистики, отображаемые расширением
pg_profile, могут обновляться с задержкой и не отражать актуальное состояние на момент формирования отчета. -
Не поддерживается механизм
shared_poolс таблицами Oriole. -
На данном этапе не поддерживается утилита
tde_disablerпри работе с таблицами OrioleDB. -
Не следует использовать утилиту
pg_dumpв условияхpartitioned_table_inherit_default_am = on.