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

Настройка

примечание

Эта страница переведена при помощи нейросети 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».