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

Настройка

примечание

Эта страница переведена при помощи нейросети GigaChat.

Основные параметры​

Все параметры GUC требуют перезапуска postmaster.

orioledb.main_buffers​

Значение по умолчанию: 64 МБ.

Размер разделяемой памяти, в которой кэшируются горячие страницы данных таблиц OrioleDB. Данный параметр является аналогом встроенного параметра GUC shared_buffers. При использовании исключительно таблиц OrioleDB рекомендуемым начальным значением данного параметра является 1/4 от объема ОЗУ с установкой shared_buffers в значение по умолчанию 128 MB. При равноправном использовании таблиц OrioleDB и Кучи рекомендуется установить 1/8 от объема ОЗУ для данного параметра и 1/8 от объема ОЗУ для shared_buffers.

orioledb.undo_buffers​

Значение по умолчанию: 1 МБ.

Размер кольцевого буфера разделяемой памяти для старых версий строк и страниц.

Кольцевой буфер каждого типа undo имеет размер не менее max_procs * 2 * O_MAX_UNDO_RECORD_SIZE байт, поэтому фактический буфер при запуске может быть больше запрошенного значения параметра GUC при высоком значении max_procs.

orioledb.recovery_pool_size​

Значение по умолчанию: 3.

Количество процессов восстановления для восстановления на уровне строк на основе WAL.

Увеличение суммы значений orioledb.recovery_pool_size и orioledb.recovery_idx_pool_size до 50-100 % от количества доступных ядер CPU ускоряет процесс восстановления для кластера. Необходимо установить max_worker_processes в значение, большее данной суммы, в противном случае OrioleDB перейдет к однопоточной сборке индекса при восстановлении или к однопоточному восстановлению.

orioledb.recovery_idx_pool_size​

Значение по умолчанию: 3.

Количество процессов параллельной сборки индексов при восстановлении.

Увеличение суммы значений orioledb.recovery_pool_size и orioledb.recovery_idx_pool_size до 50-100 % от количества доступных ядер CPU ускоряет процесс восстановления для кластера. Необходимо установить max_worker_processes в значение, большее данной суммы, в противном случае OrioleDB перейдет к однопоточной сборке индекса при восстановлении или к однопоточному восстановлению.

orioledb.recovery_queue_size​

Значение по умолчанию: 8 МБ.

Размер разделяемой памяти для очередей сообщений, связанных с процессами восстановления.

orioledb.checkpoint_completion_ratio​

Значение по умолчанию: 0.5.

Доля времени контрольной точки таблиц OrioleDB от общего времени контрольной точки. Рекомендуется установить данное значение в 1.0 при использовании исключительно таблиц OrioleDB.

orioledb.serializable​

Значение по умолчанию: table_lock.

Способ обработки клиентского запроса на изоляцию SERIALIZABLE в OrioleDB. OrioleDB не реализует истинную блокировку предикатов SSI; данный параметр выбирает одно из трех приближений:

  • table_lock (по умолчанию): установка тяжеловесной блокировки ExclusiveLock на каждую зависимость, к которой обращается транзакция SERIALIZABLE. Две транзакции SERIALIZABLE в одной таблице сериализуются через менеджер блокировок, а записи SERIALIZABLE блокируют параллельные записи не-SERIALIZABLE (RowExclusiveLock) в данной таблице; чтения не-SERIALIZABLE (AccessShareLock) не затрагиваются. Корректно, но грубо — параллельные непротиворечивые рабочие нагрузки деградируют до последовательного выполнения;
  • error: отклонение транзакций SERIALIZABLE с кодом ERRCODE_FEATURE_NOT_SUPPORTED (устаревшее поведение);
  • repeatable_read: обработка SERIALIZABLE как REPEATABLE READ только для таблиц OrioleDB — дополнительные блокировки не устанавливаются, поскольку моментальный снимок на основе CSN в OrioleDB уже обеспечивает стабильное чтение для каждой транзакции. Таблицы Кучи в той же транзакции продолжают использовать SSI PostgreSQL в обычном режиме.

Расширенные параметры конфигурации​

orioledb.free_tree_buffers​

Значение по умолчанию: 8 МБ.

Размер разделяемой памяти для метаданных блоки-аллокаторов для сжатых таблиц. Рекомендуется увеличить значение данного параметра при работе с большими сжатыми таблицами.

orioledb.catalog_buffers​

Значение по умолчанию: 8 МБ.

Размер разделяемой памяти для метаданных таблиц. Рекомендуется увеличить значение данного параметра при работе с большим количеством таблиц.

orioledb.temp_buffers​

Значение по умолчанию: 64 МБ.

Размер локального пула страниц backend-процесса, используемого для временных таблиц OrioleDB. Увеличение данного значения улучшает производительность при работе с большими временными таблицами. Данная память выделяется в частной памяти каждого backend-процесса, а не в разделяемой памяти, поэтому потребление памяти будет расти пропорционально количеству backend-процессов, обращающихся к временным таблицам OrioleDB.

orioledb.system_undo_circular_buffer_fraction​

Значение по умолчанию: 0.1.

Доля orioledb.undo_buffers для старых версий строк и страниц в системных таблицах. Рекомендуется увеличить значение данного параметра для рабочих нагрузок с интенсивным использованием DDL. Данный параметр заменяет устаревший параметр orioledb.undo_system_buffers, который выполнял ту же функцию в абсолютном размере памяти.

Оставшаяся часть orioledb.undo_buffers (за исключением доли, указанной суммой orioledb.system_undo_circular_buffer_fraction и orioledb.regular_block_undo_circular_buffer_fraction) резервируется для журналов отката на уровне строк для обычных таблиц.

orioledb.regular_block_undo_circular_buffer_fraction​

Значение по умолчанию: 0.45.

Доля orioledb.undo_buffers для журналов отката на уровне блоков для обычных таблиц.

Оставшаяся часть orioledb.undo_buffers (за исключением доли, указанной суммой orioledb.system_undo_circular_buffer_fraction и orioledb.regular_block_undo_circular_buffer_fraction) резервируется для журналов отката на уровне строк для обычных таблиц.

orioledb.xid_buffers​

Значение по умолчанию: 1 МБ.

Размер буферов xid OrioleDB в памяти. Каждый мегабайт может вместить 65 тысяч элементов xid, соответствующих открытым транзакциям. Рекомендуется увеличить данный параметр при очень высокой скорости транзакций.

orioledb.bgwriter_num_workers​

Значение по умолчанию: 1.

Количество процессов фонового записи, которые флешат измененные страницы таблиц OrioleDB в фоновом режиме. Рекомендуется установить значения больше 1 для систем с большим количеством ядер CPU.

orioledb.max_io_concurrency​

Значение по умолчанию: 0 (выключено).

Максимальное количество параллельных операций ввода-вывода, выполняемых OrioleDB одновременно. Рекомендуется установить данный параметр при достижении ядром ОС узкого места для высокого параллелизма операций ввода-вывода.

orioledb.device_filename​

Значение по умолчанию: Не установлено.

Путь к блочному устройству для режима блочного устройства.

orioledb.device_length​

Значение по умолчанию: 1 ГБ.

Длина блочного устройства.

orioledb.use_mmap​

Значение по умолчанию: off.

Определяет, следует ли использовать mmap для работы с блочным устройством. Рекомендуется установить значение on для NVRAM.

orioledb.default_compress​

Значение по умолчанию: -1 (без сжатия).

Уровень сжатия на уровне блоков по умолчанию для структур данных таблиц.

orioledb.default_primary_compress​

Значение по умолчанию: -1 (без сжатия).

Уровень сжатия на уровне блоков по умолчанию для первичных ключей таблиц.

orioledb.default_toast_compress​

Значение по умолчанию: -1 (без сжатия).

Уровень сжатия на уровне блоков по умолчанию для TOASTed-значений таблиц.

orioledb.table_description_compress​

Значение по умолчанию: off.

Отображение столбца сжатия в orioledb_table_description.

orioledb.use_sparse_files​

Значение по умолчанию: off.

Попытка выделения файлов как sparse на уровне файловой системы. Экономит занимаемое место на диске за исключением невыделенных регионов файла от занятия дискового пространства. Экспериментальная опция.

orioledb.strict_mode​

Значение по умолчанию: off.

Контролирует реакцию OrioleDB при запросе сессии функции, которая еще не поддерживается в таблице OrioleDB. При значении off OrioleDB выдает WARNING и молча переходит к непараллельному или простому варианту. При значении on OrioleDB генерирует ERROR, что полезно для обнаружения непреднамеренного перехода в тестах и CI.

Параметры для отката на основе undo (экспериментальные)​

orioledb.enable_rewind​

Значение по умолчанию: off.

Включение отката на основе undo.

orioledb.rewind_max_time​

Значение по умолчанию: 500.

Максимальный возраст в секундах с текущего момента транзакции, после которого она завершается и удаляется из буфера. Ограничение времени для отката.

orioledb.rewind_max_transactions​

Значение по умолчанию: 86400.

Максимальное количество элементов транзакций отката, сохраняемых для отката. Старые элементы транзакций отката завершаются и удаляются из буфера, таким образом указывается максимальный возраст отката. При наличии подтранзакций они также занимают элементы отката в буфере отката.

orioledb.rewind_max_transactions и orioledb.rewind_max_time работают совместно, поэтому если транзакция старше любого из этих порогов, она выходит за пределы возможности отката и не может быть откатана.

orioledb.rewind_buffers​

Значение по умолчанию: 1 МБ.

Размер буферов отката OrioleDB в памяти. Каждый мегабайт может вместить около 8000 элементов транзакций отката. При достаточном объеме памяти рекомендуется установить значение рядом с (orioledb.rewind_max_transactions / 8000) МБ для избежания записи информации отката на диск.

orioledb.logical_xid_buffers​

Значение по умолчанию: 512 КБ.

Размер буферов OrioleDB в памяти для логических идентификаторов транзакций, назначаемых выполняющимся подтранзакциям. Каждый МБ может вместить 8 миллионов выполняющихся подтранзакций. Таким образом, значение по умолчанию соответствует 4 миллионам подтранзакций.

Параметры отладки​

orioledb.debug_disable_pools_limit​

Значение по умолчанию: off.

Отключение минимального лимита для orioledb.main_buffers, orioledb.free_tree_buffers, orioledb.catalog_buffers для отладки.

orioledb.enable_stopevents​

Значение по умолчанию: off.

Включение точек останова.

orioledb.trace_stopevents​

Значение по умолчанию: off.

Отслеживание всех точек останова в системном журнале.

orioledb.debug_disable_bgwriter​

Значение по умолчанию: off.

Отключение bgwriter для отладки.

orioledb.debug_checkpoint_timeout​

Значение по умолчанию: checkpoint_timeout.

Устанавливает максимальное время между автоматическими контрольными точками WAL. Установка данного значения в число, меньшее чем checkpoint_timeout, может увеличить частоту контрольных точек OrioleDB для тестирования.

orioledb.remove_old_checkpoint_files​

Значение по умолчанию: on.

Удаление временных файлов *.tmp и *.map после контрольной точки.

orioledb.skip_unmodified_trees​

Значение по умолчанию: on.

Пропуск чтения неизмененных деревьев во время контрольной точки.

orioledb.debug_max_bridge_ctid_blkno​

Значение по умолчанию: NA.

Установка максимального значения для bridge ctid для тестирования переполнения.

orioledb.replay_until_lsn​

Значение по умолчанию: NA.

Задает граничное значение LSN, при достижении которого или после которого OrioleDB навсегда прекращает применение своих записей WAL во время восстановления. Воспроизведение останавливается, когда позиция чтения WAL достигает данного значения LSN. replay_until_lsn не должен быть раньше LSN последней завершенной контрольной точки OrioleDB. Указание replay_until_lsn раньше LSN последней завершенной контрольной точки OrioleDB не будет иметь эффекта (предупреждение будет записано в журнал при следующем запуске).

warning

Данный механизм аварийного восстановления является крайней мерой, строго аналогичной pg_resetwal. Он намеренно создает состояние split-brain: основные каталоги PostgreSQL и стандартные таблицы Кучи продолжают воспроизводить WAL, в то время как таблицы OrioleDB остаются на указанном LSN.

Дополнительную информацию смотрите в разделе «Дополнительные параметры GUC для экспериментального режима s3».