Параметры для разработчиков
Эта страница переведена при помощи нейросети GigaChat.
Следующие параметры предназначены для тестирования разработчиками и никогда не должны использоваться в производственной базе данных. Однако некоторые из них могут быть использованы для помощи при восстановлении сильно поврежденных баз данных. В связи с этим они были исключены из файла-образца postgresql.conf. Обратите внимание, что многие из этих параметров требуют специальных флагов компиляции исходного кода, чтобы вообще работать.
allow_in_place_tablespaces (boolean)
Позволяет создавать табличные пространства внутри каталогов pg_tblspc при предоставлении пустой строки местоположения команде CREATE TABLESPACE. Это предназначено для того, чтобы разрешить тестирование сценариев репликации, когда основной и резервный серверы работают на одной машине. Такие каталоги, вероятно, будут сбивать с толку инструменты резервного копирования, которые ожидают найти только символические ссылки в этом месте. Только суперпользователи и пользователи с соответствующим привилегией SET могут изменить этот параметр.
allow_system_table_mods (boolean)
Позволяет изменять структуру системных таблиц, а также выполнять определенные другие рискованные действия с системными таблицами. В противном случае это не разрешено даже для суперпользователей. Неправильное использование этого параметра может привести к необратимой потере данных или серьезному повреждению системы баз данных. Только суперпользователи и пользователи с соответствующим SET привилегией могут изменить этот параметр.
backtrace_functions (string)
Этот параметр содержит список имен функций на языке C, разделенных запятыми. Если возникает ошибка, и имя внутренней функции на языке C, где произошла ошибка, совпадает со значением в списке, то трассировка стека записывается в журнал сервера вместе с сообщением об ошибке. Это можно использовать для отладки определенных областей исходного кода.
Поддержка трассировки стека недоступна на всех платформах, а качество трассировок зависит от параметров компиляции.
Только суперпользователи и пользователи с соответствующей SET привилегией могут изменить этот параметр.
debug_discard_caches (integer)
Когда установлено значение 1, каждая запись кеша системного каталога становится недействительной при первой же возможности, независимо от того, произошло ли что-то, что могло бы сделать ее недействительной. В результате кеширование системных каталогов фактически отключается, поэтому сервер будет работать крайне медленно. Более высокие значения запускают рекурсивную проверку недействительности кеша, что еще медленнее и полезно только для тестирования самой логики кеширования. Значение по умолчанию 0 выбирает нормальное поведение кеширования каталога.
Этот параметр может быть очень полезен при попытке вызвать трудно воспроизводимые ошибки, связанные с одновременными изменениями каталога, но в противном случае он редко нужен. Смотрите файлы исходного кода inval.c и pg_config_manual.h для получения подробной информации.
Этот параметр поддерживается, когда DISCARD_CACHES_ENABLED был определен во время компиляции (что происходит автоматически при использовании опции configure --enable-cassert). В производственных сборках его значение всегда будет равно 0, а попытки установить его на другое значение приведут к ошибке.
force_parallel_mode (enum)
Позволяет использовать параллельные запросы для целей тестирования даже в тех случаях, когда не ожидается улучшения производительности. Допустимыми значениями force_parallel_mode являются off (использовать параллельный режим только тогда, когда это предположительно улучшит производительность), on (принудительно выполнять параллельный запрос для всех запросов, которые считаются безопасными), и regress (как on, но с дополнительными изменениями поведения, описанными ниже).
Более конкретно, установка этого значения на on добавит узел Gather к верхней части любого плана запроса, для которого это кажется безопасным, так что запрос выполняется внутри параллельного рабочего процесса. Даже если параллельный рабочий процесс недоступен или не может быть использован, операции, такие как запуск под транзакции, которые были бы запрещены в контексте параллельного запроса, будут запрещены, если только планировщик не считает, что это приведет к сбою запроса. Если при установке этого параметра возникают сбои или непредвиденные результаты, некоторые функции, используемые в запросе, могут нуждаться в маркировке PARALLEL UNSAFE (или, возможно, PARALLEL RESTRICTED).
Установка этого значения на regress имеет все те же эффекты, что и установка его на on, плюс некоторые дополнительные эффекты, предназначенные для облегчения автоматизированного регрессионного тестирования. Обычно сообщения от параллельного рабочего процесса содержат строку контекста, указывающую на это, но настройка regress подавляет эту строку, чтобы вывод был таким же, как и при непараллельном выполнении. Кроме того, узлы Gather, добавляемые к планам этой настройкой, скрыты во входных данных EXPLAIN, чтобы выходные данные соответствовали тому, что было бы получено, если бы эта настройка была отключена off.
ignore_system_indexes (boolean)
Игнорировать системные индексы при чтении системных таблиц (но все равно обновляйте индексы при изменении таблиц). Это полезно при восстановлении после повреждения системных индексов. Этот параметр нельзя изменить после начала сеанса.
post_auth_delay (integer)
Количество времени, на которое следует задержать начало нового серверного процесса после выполнения процедуры аутентификации. Это предназначено для того, чтобы дать разработчикам возможность подключиться к серверному процессу с помощью отладчика. Если это значение указано без единиц измерения, оно принимается за секунды. Значение нуля (по умолчанию) отключает задержку. Этот параметр нельзя изменить после начала сеанса.
pre_auth_delay (integer)
Количество времени для задержки сразу после того, как новый серверный процесс был создан, перед тем как он проведет процедуру аутентификации. Это предназначено для того, чтобы дать разработчикам возможность подключиться к серверному процессу с помощью отладчика для отслеживания неправильного поведения при аутентификации. Если это значение указано без единиц измерения, оно принимается за секунды. Значение нуля (по умолчанию) отключает задержку. Этот параметр может быть установлен только в файле postgresql.conf или в командной строке сервера.
trace_notify (boolean)
Генерирует большое количество выходных данных отладки для команд LISTEN и NOTIFY. Параметры client_min_messages или log_min_messages должны быть установлены на DEBUG1 или ниже, чтобы отправить этот вывод клиенту или журналу сервера соответственно.
trace_recovery_messages (enum)
Включает ведение журнала отладочной информации, связанной с восстановлением, которая иначе не была бы зарегистрирована. Этот параметр позволяет пользователю переопределить обычную настройку параметра log_min_messages, но только для определенных сообщений. Он предназначен для использования при отладке горячего резервирования. Допустимые значения включают DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1 и LOG. По умолчанию используется значение LOG, которое вообще никак не влияет на решения о ведении журнала. Остальные значения приводят к регистрации отладочных сообщений, связанных с восстановлением, с приоритетом этого уровня или выше, так как будто у них был приоритет LOG; для обычных настроек log_min_messages это приводит к безусловной отправке их в журнал сервера. Этот параметр можно установить только в файле postgresql.conf или в командной строке сервера.
trace_sort (boolean)
Если включено, отображается информация об использовании ресурсов во время сортировки. Этот параметр доступен только в том случае, если макрос TRACE_SORT был определен при компиляции PostgreSQL. (Однако TRACE_SORT в настоящее время определяется по умолчанию.)
trace_locks (boolean)
Если включено, выводится информация об использовании блокировки. Выводимая информация включает тип операции блокировки, тип блокировки и уникальный идентификатор объекта, который блокируется или разблокируется. Также включены битовые маски для типов блокировок, уже предоставленных для этого объекта, а также для типов блокировок, ожидаемых для этого объекта. Для каждого типа блокировки также сбрасывается количество предоставленных замков и ожидающих замков, а также общие итоги. Пример вывода файла журнала показан здесь:
LOG: LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
wait(0) type(AccessShareLock)
LOG: GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1
wait(0) type(AccessShareLock)
LOG: UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
wait(0) type(AccessShareLock)
LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
wait(0) type(INVALID)
Подробности о структуре, которая будет сброшена, можно найти в src/include/storage/lock.h.
Этот параметр доступен только в том случае, если макрос LOCK_DEBUG был определен при компиляции PostgreSQL.
trace_lwlocks (boolean)
Если включено, выводится информация об использовании легких блокировок. Легкие блокировки предназначены главным образом для обеспечения взаимного исключения доступа к структурам данных общей памяти.
Этот параметр доступен только в том случае, если макрос LOCK_DEBUG был определен при компиляции PostgreSQL.
trace_userlocks (boolean)
Если включено, выводится информация об использовании блокировки пользователя. Вывод такой же, как для trace_locks, но только для консультативных блокировок.
Этот параметр доступен только в том случае, если макрос LOCK_DEBUG был определен при компиляции PostgreSQL.
trace_lock_oidmin (integer)
Если установлено, не отслеживайте блокировки для таблиц ниже этого OID (используется для предотвращения вывода на системных таблицах).
Этот параметр доступен только в том случае, если макрос LOCK_DEBUG был определен при компиляции PostgreSQL.
trace_lock_table (integer)
Безусловно отслеживает блокировки этой таблицы (OID).
Этот параметр доступен только в том случае, если макрос LOCK_DEBUG был определен при компиляции PostgreSQL.
debug_deadlocks (boolean)
Если установлено, сбрасывает информацию обо всех текущих блокировках при возникновении тайм-аута взаимоблокировки.
Этот параметр доступен только в том случае, если макрос LOCK_DEBUG был определен при компиляции PostgreSQL.
log_btree_build_stats (boolean)
Если установлено, регистрируются статистики использования системных ресурсов (памяти и CPU) для различных операций с деревьями В.
Этот параметр доступен только в том случае, если макрос BTREE_BUILD_STATS был определен при компиляции PostgreSQL.
wal_consistency_checking (string)
Этот параметр предназначен для проверки наличия ошибок в процедурах повторного выполнения WAL. При включении полностраничные изображения любых буферов, измененных в сочетании с записью WAL, добавляются к записи. Если запись впоследствии воспроизводится повторно, система сначала применяет каждую запись, а затем проверяет, совпадают ли модифицированные записью буферы с сохраненными изображениями. В некоторых случаях (например, битовые подсказки) допустимы незначительные отклонения, которые будут проигнорированы. Любые непредвиденные различия приведут к фатальной ошибке, прекращающей восстановление.
Значение по умолчанию для этого параметра - пустая строка, которая отключает эту функцию. Его можно установить на all для проверки всех записей или на список разделенных запятыми диспетчеров ресурсов для проверки только записей, исходящих от этих диспетчеров ресурсов. В настоящее время поддерживаемые диспетчеры ресурсов включают heap, heap2, btree, hash, gin, gist, sequence, spgist, brin и generic. Расширения могут определять дополнительные диспетчеры ресурсов. Только суперпользователи и пользователи с соответствующим привилегией SET могут изменить этот параметр.
wal_debug (boolean)
Если включено, выводить отладочную информацию, связанную с WAL. Этот параметр доступен только в том случае, если макрос WAL_DEBUG был определен при компиляции PostgreSQL.
ignore_checksum_failure (boolean)
Действует только в том случае, если включены контрольные суммы данных.
Обнаружение сбоя контрольной суммы во время чтения обычно приводит к тому, что PostgreSQL сообщает об ошибке и прерывает текущую транзакцию. Установка ignore_checksum_failure на значение "включено" заставляет систему игнорировать сбой (но все равно сообщать предупреждение) и продолжать обработку. Такое поведение может привести к сбоям, распространению или скрытию повреждений, или другим серьезным проблемам. Однако это может позволить обойти ошибку и получить неповрежденные кортежи, которые все еще могут присутствовать в таблице, если заголовок блока все еще исправен. Если заголовок поврежден, будет сообщена ошибка даже при включении этой опции. Значение по умолчанию - off. Только суперпользователи и пользователи с соответствующей привилегией SET могут изменить этот параметр.
zero_damaged_pages (boolean)
Обнаружение поврежденного заголовка страницы обычно приводит к тому, что PostgreSQL сообщает об ошибке и прерывает текущую транзакцию. Установка zero_damaged_pages на включено заставляет систему вместо этого сообщать предупреждение, сбрасывать поврежденную страницу в памяти и продолжать обработку. Такое поведение приведет к потере данных, а именно всех строк на поврежденной странице. Однако это позволяет обойти ошибку и получить строки из любых неповрежденных страниц, которые могут присутствовать в таблице. Это полезно для восстановления данных, если повреждение произошло из-за аппаратной или программной ошибки. Этот параметр не следует устанавливать до тех пор, пока не будет утрачена возможность восстановить данные с поврежденных страниц таблицы. Обнуленные страницы не записываются на диск, поэтому рекомендуется воссоздать таблицу или индекс перед повторным отключением этого параметра. Значение по умолчанию - off. Только суперпользователи и пользователи с соответствующим привилегией SET могут изменить эту настройку.
ignore_invalid_pages (boolean)
Если установлено значение off (по умолчанию), обнаружение записей WAL со ссылками на недопустимые страницы во время восстановления вызывает у PostgreSQL ошибку уровня PANIC, прерывающую восстановление. Установка ignore_invalid_pages на on заставляет систему игнорировать недопустимые ссылки на страницы в записях WAL (но все равно сообщать предупреждение) и продолжить восстановление. Такое поведение может вызвать сбои, потерю данных, распространение или сокрытие повреждений, или другие серьезные проблемы. Однако это может позволить обойти ошибку уровня PANIC, завершить восстановление и заставить сервер запуститься. Параметр можно установить только при запуске сервера. Он действует только во время восстановления или в режиме ожидания.
jit_debugging_support (boolean)
Если LLVM имеет необходимую функциональность, зарегистрируйте сгенерированные функции с помощью GDB. Это упрощает отладку. Значение по умолчанию - off. Этот параметр можно задать только при запуске сервера.
jit_dump_bitcode (boolean)
Записывает сгенерированный LLVM IR в файловую систему внутри data_directory. Это полезно только для работы над внутренними аспектами реализации JIT. Значение по умолчанию - off. Только суперпользователи и пользователи с соответствующей привилегией SET могут изменять эту настройку.
jit_expressions (boolean)
Определяет, компилируются ли выражения с использованием JIT-компиляции при активации JIT-компиляции (смотрите Раздел Когда использовать JIT?). По умолчанию используется on .
jit_profiling_support (boolean)
Если у LLVM есть необходимая функциональность, сгенерируйте данные, необходимые для того, чтобы perf мог профилировать функции, созданные JIT. Это записывает файлы в ~/.debug/jit/; пользователь несет ответственность за выполнение очистки при необходимости. Значение по умолчанию - off. Этот параметр может быть установлен только при запуске сервера.
jit_tuple_deforming (boolean)
Определяет, компилируется ли деформация кортежа с использованием JIT-компиляции при активации JIT-компиляции (смотрите Раздел Когда использовать JIT?). По умолчанию установлено значение on.
remove_temp_files_after_crash (boolean)
Когда установлено значение on, которое является значением по умолчанию, PostgreSQL автоматически удаляет временные файлы после сбоя бэкенда. Если отключено, файлы будут сохранены и могут быть использованы для отладки, например. Повторные сбои могут привести к накоплению ненужных файлов. Этот параметр можно установить только в файле postgresql.conf или в командной строке сервера.