Настройки PostgreSQL
Для кластера Managed Service for PostgreSQL можно задать настройки, которые относятся к PostgreSQL. Часть настроек задается на уровне кластера, часть — на уровне пользователя.
Метки рядом с названием настройки позволяют определить, с помощью какого интерфейса задается значение этой настройки: консоль управления, CLI, API или Terraform. Метка Все интерфейсы указывает, что поддерживаются все перечисленные интерфейсы.
В зависимости от выбранного интерфейса, одна и та же настройка будет представлена по-разному, например:
- Backend flush after в консоли управления соответствует:
backend_flush_afterв gRPC API, CLI, Terraform;backendFlushAfterв REST API;
- Default transaction isolation в настройках уровня пользователя в консоли управления соответствует:
--default-transaction-isolationв CLI;default_transaction_isolationв gRPC API;defaultTransactionIsolationв REST API.
Зависимость настроек от класса хостов и размера хранилища
Значения некоторых настроек PostgreSQL могут быть автоматически скорректированы при изменении класса хостов или размера хранилища:
- Если значения не были заданы или не подходят новому классу/размеру, будут применены настройки по умолчанию для этого класса/размера.
- Если заданные вручную настройки подходят для нового класса/размера, они не будут изменены.
Список настроек, зависящих от класса хостов:
- Autovacuum max workers.
- Autovacuum vacuum cost delay.
- Autovacuum vacuum cost limit.
- Conn limit.
- Max connections.
- Shared buffers.
Список настроек, зависящих от размера хранилища:
Настройки на уровне кластера
Доступны следующие настройки:
-
Archive timeout
Все интерфейсыПериодичность (в миллисекундах) архивации лога транзакций PostgreSQL.
Минимальное значение —
10000, максимальное значение —86400000, по умолчанию —30000.Подробнее см. в документации PostgreSQL
. -
Array nulls
Все интерфейсыУправляет распознаванием элементов
NULLпри вставке массива. Если настройка включена, то такие элементы распознаются как пустое полеNULL. В противном случае — как строка с текстом «NULL».По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Auto explain log analyze
Консоль управленияAPITerraformОпределяет, будет ли статистика плана запроса выводиться в лог PostgreSQL автоматически, без использования команды
EXPLAIN. Это позволяет отслеживать неоптимизированные запросы. Настройка использует модульauto_explain, для его работы необходимо подключить библиотекуauto_explain.По умолчанию настройка выключена (статистика плана запроса не выводится в лог).
Подробнее см. в документации PostgreSQL
. -
Auto explain log buffers
Консоль управленияAPITerraformОпределяет, будет ли статистика использования буферного кеша выводиться в лог PostgreSQL через модуль
auto_explain. Работает аналогично параметруBUFFERSв командеEXPLAIN. Применяется только при включенной настройке Auto explain log analyze.По умолчанию настройка выключена (статистика использования буферного кеша не выводится в лог).
Подробнее см. в документации PostgreSQL
. -
Auto explain log min duration
Консоль управленияAPITerraformМинимальное время выполнения запроса (в миллисекундах), при котором включается логирование в модуле
auto_explain.Минимальное значение —
-1(логирование отключено), максимальное значение —2147483647, по умолчанию —-1. При значении0логируются планы всех запросов независимо от времени их выполнения.Подробнее см. в документации PostgreSQL
. -
Auto explain log nested statements
Консоль управленияAPITerraformОпределяет, будет ли в модуле
auto_explainлогироваться выполнение вложенных запросов внутри SQL-функций. Применяется только при включенной настройке Auto explain log analyze.По умолчанию настройка выключена (логируются только планы верхнеуровневых запросов).
Подробнее см. в документации PostgreSQL
. -
Auto explain log timing
Консоль управленияAPITerraformОпределяет, будет ли в модуле
auto_explainлогироваться время выполнения отдельных этапов плана запроса. Работает аналогично параметруTIMINGв командеEXPLAIN. Применяется только при включенной настройке Auto explain log analyze.По умолчанию настройка выключена (время выполнения отдельных этапов не логируется).
Подробнее см. в документации PostgreSQL
. -
Auto explain log triggers
Консоль управленияAPITerraformОпределяет, будет ли в модуле
auto_explainвыводиться статистика выполнения триггеров. Применяется только при включенной настройке Auto explain log analyze.По умолчанию настройка выключена (статистика выполнения триггеров не выводится).
Подробнее см. в документации PostgreSQL
. -
Auto explain log verbose
Консоль управленияAPITerraformОпределяет, будут ли в модуле
auto_explainдетализированы логи. Работает аналогично параметруVERBOSEв командеEXPLAIN. Применяется только при включенной настройке Auto explain log analyze.По умолчанию настройка выключена (логи не детализируются).
Подробнее см. в документации PostgreSQL
. -
Auto explain sample rate
Консоль управленияAPITerraformДоля запросов, которые логируются с помощью модуля
auto_explainв каждой сессии. Применяется только при включенной настройке Auto explain log analyze.Минимальное значение —
0.0(никакие запросы не логируются), максимальное значение —1.0(логируются все запросы), по умолчанию —1.0.Подробнее см. в документации PostgreSQL
. -
Autovacuum analyze scale factor
Все интерфейсыДоля измененных или удаленных записей в таблице, при которой процесс автоочистки
выполнит командуANALYZEдля сбора статистики.Минимальное значение —
0.0, максимальное значение —1.0, по умолчанию —0.0001.Подробнее см. в документации PostgreSQL
. -
Autovacuum max workers
Консоль управленияAPITerraformCLIМаксимальное количество параллельно запущенных процессов автоочистки
. Автоочистка периодически запускается для каждой БД, определяет, какие из записей в таблицах помечены на удаление, и удаляет их.Минимальное значение —
1, максимальное значение —32. Значение по умолчанию зависит от выбранного класса хостов и равно количеству vCPU на одном хосте, но не может быть меньше3.Подробнее см. в документации PostgreSQL
. -
Autovacuum naptime
Консоль управленияAPITerraformЗадает минимальный интервал (в миллисекундах) между запусками процесса автоочистки
. Чтобы не нагружать БД при частых изменениях данных, увеличьте значение настройки.Минимальное значение —
1000, максимальное значение —86400000, по умолчанию —15000.Подробнее см. в документации PostgreSQL
. -
Autovacuum vacuum cost delay
Все интерфейсыВремя (в миллисекундах), в течение которого будет простаивать процесс автоочистки
при превышении предела стоимости.Минимальное значение —
-1(настройка не применяется), максимальное значение —100. Значение по умолчанию зависит от выбранного класса хостов:-
Если количество vCPU для выбранного класса хостов больше или равно 10, используется значение
5. -
В остальных случаях значение по умолчанию рассчитывается по формуле:
55 - 5 × <количество_vCPU_на_одном_хосте>
Подробнее см. в документации PostgreSQL
. -
-
Autovacuum vacuum cost limit
Все интерфейсыПредел стоимости, при превышении которого процесс автоочистки
будет остановлен на время, заданное параметром Autovacuum vacuum cost delay.Минимальное значение —
-1(настройка не применяется), максимальное значение —10000. Значение по умолчанию зависит от выбранного класса хостов и задается формулой:150 × <количество_vCPU_на_одном_хосте> + 400Пример:
Класс хоста vCPU Значение по умолчанию s2.small 4 150 × 4 + 400 = 1000m2.medium 6 150 × 6 + 400 = 1300Подробнее см. в документации PostgreSQL
. -
Autovacuum vacuum insert scale factor
Все интерфейсыДоля от размера таблицы, добавляемая к величине настройки Autovacuum vacuum insert threshold, по достижении которой запустится процесс автоочистки
.Минимальное значение —
0.0, максимальное значение —1.0, по умолчанию —0.2.Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Autovacuum vacuum insert threshold
Все интерфейсыЗадает количество строк, вставка которых в любую таблицу запустит процесс автоочистки
.Минимальное значение —
-1(настройка не применяется), максимальное значение —2147483647, по умолчанию —1000.Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Autovacuum vacuum scale factor
Все интерфейсыДоля измененных или удаленных записей в таблице, при которой процесс автоочистки
запустит сборку и удаление мусора командойVACUUM.Минимальное значение —
0.0(настройка не применяется), максимальное значение —1.0, по умолчанию —0.00001.Подробнее см. в документации PostgreSQL
. -
Autovacuum work mem
Консоль управленияAPITerraformCLIОбъем памяти (в байтах), выделяемый каждому процессу автоочистки
.Минимальное значение —
-1(настройка не применяется), максимальное значение —2147483647, по умолчанию —-1.Подробнее см. в документации PostgreSQL
. -
Backend flush after
Все интерфейсыМаксимальный объем записываемых служебным процессом данных (в килобайтах) в страничном кеше ядра ОС. При его превышении СУБД дает команду ОС записать данные на диск. Чем больше параметр, тем меньше вероятность замедления при записи данных на диск (в том числе, после завершения контрольной точки) командой
fsync.Минимальное значение —
0(настройка не применяется), максимальное значение —2048, по умолчанию —0.Подробнее см. в документации PostgreSQL
. -
Backslash quote
Все интерфейсыУправляет представлением кавычки в SQL-строке.
Допустимые значения:
backslash_quote(BACKSLASH_QUOTEдля Terraform, API и CLI) — кавычка может быть представлена как\'(эквивалентно значениюon);on(BACKSLASH_QUOTE_ONдля Terraform, API и CLI) — кавычка может быть представлена как\';off(BACKSLASH_QUOTE_OFFдля Terraform, API и CLI) — кавычка задается только обычным для SQL способом'';safe_encoding(BACKSLASH_QUOTE_SAFE_ENCODINGдля Terraform, API и CLI) — представление кавычки как\'допускается только для клиентских кодировок, не использующих\в многобайтных символах.
Значение по умолчанию —
safe_encoding.Подробнее см. в документации PostgreSQL
. -
Bgwriter delay
Все интерфейсыЗадержка (в миллисекундах) между запусками процесса фоновой записи. Этот процесс записывает новые или измененные элементы буферного кеша PostgreSQL на диск. Задержка позволяет избежать многократной перезаписи страницы при каждом изменении и снизить нагрузку на диск.
Минимальное значение —
10, максимальное значение —10000, по умолчанию —200.Подробнее см. в документации PostgreSQL
. -
Bgwriter flush after
Консоль управленияAPITerraformОбъем обрабатываемых процессом фоновой записи данных (в килобайтах), при превышении которого СУБД дает команду ОС сохранить эти данные на диск. Параметр ограничивает объем
грязных
данных в страничном кеше ядра ОС и уменьшает вероятность замедления при выполнении командыfsyncв конце контрольной точки или когда ОС в фоне сбрасывает данные на диск.Минимальное значение —
0, максимальное значение —2048, по умолчанию —512.Подробнее см. в документации PostgreSQL
. -
Bgwriter lru maxpages
Все интерфейсыМаксимальное число элементов буферного кеша PostgreSQL, которое процесс фоновой записи может сохранить за цикл активности. При нулевом значении фоновая запись отключается.
Минимальное значение —
0, максимальное значение —1073741823, по умолчанию —100.Подробнее см. в документации PostgreSQL
. -
Bgwriter lru multiplier
Все интерфейсыМножитель, на который при следующем запуске будет увеличено среднее число буферов, сохраняемых процессом фоновой записи.
Минимальное значение —
0, максимальное значение —10, по умолчанию —2.Подробнее см. в документации PostgreSQL
. -
Bytea output
Все интерфейсыЗадает формат вывода бинарных строковых значений
(типbytea):hex(BYTEA_OUTPUT_HEXдля Terraform, API и CLI) — каждый байт задается двумя шестнадцатеричными символами, например 'SELECT '\xDEADBEEF';';escape(BYTEA_OUTPUT_ESCAPEдля Terraform, API и CLI) — стандартный формат PostgreSQL, только символы ASCII.
Значение по умолчанию —
hex.Подробнее см. в документации PostgreSQL
. -
Checkpoint completion target
Все интерфейсыДоля интервала между контрольными точками, определяющая максимальную продолжительность снятия контрольной точки. Например, при значении
0.5снятие контрольной точки будет завершено примерно за половину времени до следующей контрольной точки.Минимальное значение —
0.0, максимальное значение —1.0, по умолчанию —0.5.Подробнее см. в документации PostgreSQL
. -
Checkpoint flush after
Консоль управленияAPITerraformОбъем области памяти (в килобайтах), занятый страницами для записи в контрольной точке. Те страницы, которые выходят за границы области, будут сброшены на диск и удалены из страничного кеша ОС.
Минимальное значение —
0, максимальное значение —2048, по умолчанию —256.Подробнее см. в документации PostgreSQL
. -
Checkpoint timeout
Все интерфейсыИнтервал между контрольными точками (в миллисекундах).
Минимальное значение —
30000, максимальное значение —86400000, по умолчанию —300000.Подробнее см. в документации PostgreSQL
. -
Client connection check interval
Консоль управленияAPICLIПериод времени между проверками клиентских соединений при выполнении запросов (в миллисекундах). Проверка опрашивает сокет сервера для подключения и прерывает длительные запросы, если обнаруживает, что соединение закрыто.
Минимальное значение —
0(проверка не выполняется), максимальное значение —2147483647. По умолчанию установлено минимальное значение.Функциональность поддерживается в PostgreSQL начиная с версии 14.
Подробнее см. в документации PostgreSQL
. -
Client min messages
Все интерфейсыУровень сообщений логирования, отправляемых клиентским приложениям. Возможные значения (по возрастанию важности):
debug5,debug4,debug3,debug2,debug1,info,notice,warning,error,log,fatalиpanic(для Terraform, API, CLILOG_LEVEL_DEBUG5,LOG_LEVEL_DEBUG4,LOG_LEVEL_DEBUG3,LOG_LEVEL_DEBUG2,LOG_LEVEL_DEBUG1,LOG_LEVEL_INFO,LOG_LEVEL_NOTICE,LOG_LEVEL_WARNING,LOG_LEVEL_ERROR,LOG_LEVEL_LOG,LOG_LEVEL_FATALиLOG_LEVEL_PANIC).Значение по умолчанию —
NOTICE.Подробнее см. в документации PostgreSQL
. -
Constraint exclusion
Все интерфейсыРазрешает планировщику использовать ограничения таблиц для оптимизации запросов.
Допустимые значения:
on(CONSTRAINT_EXCLUSION_ONдля Terraform, API и CLI) — задействовать ограничения для всех таблиц;off(CONSTRAINT_EXCLUSION_OFFдля Terraform, API и CLI) — не задействовать ограничения;partition(CONSTRAINT_EXCLUSION_PARTITIONдля Terraform, API и CLI) — задействовать ограничения только для дочерних таблиц и подзапросовUNION ALL.
Значение по умолчанию —
partition.Подробнее см. в документации PostgreSQL
. -
Cursor tuple fraction
Все интерфейсыЗадает для планировщика оценку доли строк, которые будут получены через курсор.
Минимальное значение —
0.0, максимальное значение —1.0, по умолчанию —0.1.Подробнее см. в документации PostgreSQL
. -
Deadlock timeout
Консоль управленияAPITerraformCLIВремя ожидания (в миллисекундах), по истечении которого будет выполняться проверка состояния перекрестной блокировки.
Минимальное значение —
1, максимальное значение —2147483647, по умолчанию —1000.Подробнее см. в документации PostgreSQL
. -
Default statistics target
Все интерфейсыМаксимальное число записей статистики по каждому столбцу таблиц БД. С помощью статистики планировщик оценивает число строк, возвращаемых запросами, чтобы выбрать наиболее подходящий план запроса.
Чтобы повысить точность оценок планировщика, увеличьте значение настройки.
Минимальное значение —
1, максимальное значение —10000, по умолчанию —1000.Подробнее см. в документации PostgreSQL
. -
Default transaction isolation
Все интерфейсыОпределяет уровень изоляции по умолчанию для новых транзакций SQL.
Допустимые значения:
read committed(TRANSACTION_ISOLATION_READ_COMMITTEDдля Terraform, API и CLI) — запрос видит только те строки, которые были зафиксированы до начала его выполнения.read uncommitted(TRANSACTION_ISOLATION_READ_UNCOMMITTEDдля Terraform, API и CLI) — поведение этого уровня изоляции в PostgreSQL идентичноread committed.repeatable read(TRANSACTION_ISOLATION_REPEATABLE_READдля Terraform, API и CLI) — все запросы в текущей транзакции видят только те строки, которые были зафиксированы перед первым выполненным в этой транзакции запросом на выборку или изменение данных.serializable(TRANSACTION_ISOLATION_SERIALIZABLEдля Terraform, API и CLI) — обеспечивает самый строгий уровень изоляции из всех приведенных выше. Поведение этого уровня изоляции в PostgreSQL аналогичноrepeatable read. Однако, если наложение операций чтения и записи параллельных сериализуемых транзакций несовместимо с их последовательным выполнением, произойдет откат одной из транзакций с ошибкойсбой сериализации
.
Значение по умолчанию —
read committed.Подробнее об уровнях изоляции см. в документации PostgreSQL
.Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно переопределить на уровне пользователя.
-
Default transaction read only
Все интерфейсыУстанавливает режим
только чтение
в каждой новой транзакции для любых таблиц, кроме временных.По умолчанию настройка выключена (допускается чтение и запись).
Подробнее см. в документации PostgreSQL
. -
Default with oids
Все интерфейсыДобавляет столбец
OIDс уникальным идентификатором строки. Настройка действует, если таблица создается:- либо без указания
WITH OIDSиWITHOUT OIDS; - либо с помощью команды
SELECT INTO.
По умолчанию настройка выключена (столбец
OIDне добавляется).Функциональность не поддерживается в PostgreSQL начиная с версии 12. Используйте настройку только для совместимости со старыми приложениями.
Подробнее см. в документации PostgreSQL
. - либо без указания
-
Effective cache size
Все интерфейсыОценка эффективного размера дискового кеша (в байтах), доступного для одного запроса. Чем выше значение настройки, тем вероятнее планировщик применит сканирование по индексу. Более низкие значения повышают вероятность применения последовательного сканирования.
Минимальное значение —
0, максимальное значение —549755813888(512 ГБ), по умолчанию —107374182400(100 ГБ).Подробнее см. в документации PostgreSQL
. -
Effective io concurrency
Все интерфейсыМаксимальное число параллельных операций дискового ввода-вывода в отдельной сессии работы с БД. Чем больше это число, тем больше операций PostgreSQL будет пытаться выполнить параллельно в отдельной сессии.
Минимальное значение —
0, максимальное значение —1000, по умолчанию —1.Подробнее см. в документации PostgreSQL
. -
Enable async append
Консоль управленияAPICLIРазрешает планировщику учитывать асинхронное выполнение плана запроса на разных хостах при добавлении данных из внешних источников.
По умолчанию настройка включена.
Функциональность поддерживается в PostgreSQL начиная с версии 14.
Подробнее см. в документации PostgreSQL
. -
Enable bitmapscan
Все интерфейсыРазрешает планировщику сканировать битовую карту индекса при просмотре таблиц, даже если это явно не указано в запросе. Этот способ доступа похож на обычный индексный доступ, но происходит в два этапа:
-
Сканируется индекс (Bitmap Index Scan) и строится битовая карта, в которой отмечаются те строки, которые должны быть прочитаны в запросе.
-
Выполняется сканирование таблицы (Bitmap Heap Scan). При этом:
- страницы читаются последовательно (увеличивается шанс воспользоваться кешем ОС);
- каждая страница просматривается только один раз.
Настройка эффективна при повторных запросах к таблицам.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
-
Enable gathermerge
Консоль управленияAPICLIРазрешает планировщику использовать узел Gather Merge, чтобы выполнить слияние строк, полученных в результате работы параллельных процессов, и сохранить порядок, в котором эти строки были получены.
По умолчанию настройка включена.
Функциональность поддерживается в PostgreSQL начиная с версии 14.
Подробнее см. в документации PostgreSQL
. -
Enable hashagg
Все интерфейсыРазрешает планировщику строить хеш-таблицу из набора результатов, даже если это явно не указано в запросе. Настройка эффективна при частых запросах без сортировок к таблицам с большим объемом данных.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable hashjoin
Все интерфейсыРазрешает планировщику строить объединения (
JOIN) таблиц по хеш-значениям строк, даже если это явно не указано в запросе. Настройка эффективна при работе с большими объемами данных или когда таблицы не отсортированы по столбцам, по которым производится объединение.По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable incremental sort
Все интерфейсыРазрешает планировщику использование инкрементной сортировки. Такой способ сортировки позволяет уменьшить время выполнения запроса и объем требуемой оперативной памяти, если необходимо упорядочить строки по нескольким столбцам, причем по одному или нескольким из них сортировка уже выполнена.
По умолчанию настройка включена.
Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Enable indexonlyscan
Все интерфейсыРазрешает планировщику использовать сканирование индекса таблиц без обращения к данным, даже если это явно не указано в запросе.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable indexscan
Все интерфейсыРазрешает планировщику использовать сканирование индекса таблиц, даже если это явно не указано в запросе.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable material
Все интерфейсыРазрешает планировщику использовать запросы материализации.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable mergejoin
Все интерфейсыРазрешает планировщику использовать слияние операций
JOINпри объединении таблиц.По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable nestloop
Все интерфейсыРазрешает планировщику использовать объединения (
JOIN) с вложенными циклами. При выключенной настройке планировщик будет использовать другие методы.По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable parallel append
Все интерфейсыРазрешает планировщику использовать распараллеливание при добавлении данных.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable parallel hash
Все интерфейсыРазрешает планировщику строить объединения по хешу строк с распараллеливанием хеширования. Настройка действует при включенной настройке Enable hashjoin.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable partition pruning
Все интерфейсыРазрешает планировщику удалять ненужные партиции из планов запроса к партиционированным таблицам.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable partitionwise aggregate
Все интерфейсыРазрешает планировщику группировать или агрегировать данные с учетом партиций, чтобы запросы выполнялись для каждой партиции отдельно.
По умолчанию настройка выключена (планировщик не учитывает партиционирование).
Подробнее см. в документации PostgreSQL
. -
Enable partitionwise join
Все интерфейсыРазрешает планировщику использовать партиционирование таблиц при планировании запросов. Настройка позволяет выполнять запросы объединения партиционированных таблиц через объединение соответствующих партиций.
По умолчанию настройка выключена (планировщик не учитывает партиционирование).
Подробнее см. в документации PostgreSQL
. -
Enable seqscan
Все интерфейсыРазрешает планировщику использовать планы последовательного сканирования таблиц.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable sort
Все интерфейсыРазрешает планировщику использовать шаги с явной сортировкой.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Enable tidscan
Все интерфейсыРазрешает планировщику использовать планы сканирования TID (tuple identifier) для ускорения выполнения запросов.
По умолчанию настройка включена (планировщик выполняет сканирование TID).
Подробнее см. в документации PostgreSQL
. -
Escape string warning
Все интерфейсыВключает предупреждение о наличии в запросе символа
\в обычной строковой константе (с синтаксисом'...'). Настройка работает только при отключенном параметре Standard conforming strings.По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Exit on error
Все интерфейсыВключает прерывание сессии в случае любой ошибки в запросе.
По умолчанию настройка выключена.
Подробнее см. в документации PostgreSQL
. -
Force parallel mode
Все интерфейсыПозволяет распараллеливать запрос для тестирования:
off(FORCE_PARALLEL_MODE_OFFдля Terraform, API и CLI) — использовать параллельный режим, только когда ожидается увеличение производительности.on(FORCE_PARALLEL_MODE_ONдля Terraform, API и CLI) — принудительно распараллеливать все запросы, для которых это безопасно.regress(FORCE_PARALLEL_MODE_REGRESSдля Terraform, API и CLI) — эквивалентенon, но стандартный вывод такой же, как при выполнении в режимеoff.
Значение по умолчанию —
off.Подробнее см. в документации PostgreSQL
. -
From collapse limit
Все интерфейсыПока количество элементов в списке
FROMне превышает значение настройки, планировщик будет объединять вложенные запросы с внешним запросом. При уменьшении значения сокращается время планирования, но план запроса может стать менее эффективным.Минимальное значение —
1, максимальное значение —2147483647, по умолчанию —8.Подробнее см. в документации PostgreSQL
. -
Geqo
Консоль управленияAPIВключает генетическую оптимизацию запросов (GEQO
).Значение по умолчанию —
false(генетическая оптимизация выключена).Подробнее см. в документации PostgreSQL
. -
Geqo effort
Консоль управленияAPIЗадает соотношение между временем на планирование запроса и качеством плана запроса в алгоритме GEQO
.Чем выше значение, тем дольше происходит планирование запроса, но в то же время повышается вероятность того, что будет выбран эффективный план запроса. Настройка не влияет на работу алгоритма напрямую, а используется для расчета значений по умолчанию для других настроек.
Минимальное значение —
1, максимальное значение —10, значение по умолчанию —5.Подробнее см. в документации PostgreSQL
. -
Geqo generations
Консоль управленияAPIЗадает количество итераций алгоритма GEQO
.Полезные значения находятся в диапазоне от
100до1000.Если значение настройки равно
0(по умолчанию), то количество итераций алгоритма выбирается на основании настройки Geqo pool size.Подробнее см. в документации PostgreSQL
. -
Geqo pool size
Консоль управленияAPIЗадает количество особей в генетической популяции в алгоритме GEQO
.Не может равняться
1. Полезные значения находятся в диапазоне от100до1000.Если значение настройки равно
0(по умолчанию), то количество особей выбирается в зависимости от настройки Geqo effort и количества таблиц в запросе.Подробнее см. в документации PostgreSQL
. -
Geqo seed
Консоль управленияAPIЗадает начальное значение для генератора случайных чисел, используемого алгоритмом GEQO
при выборе путей в пространстве поиска порядка соединений.Изменение настройки изменяет набор исследуемых путей соединений и может как улучшить, так и ухудшить эффективность найденного пути.
Минимальное значение —
0, максимальное значение —1, значение по умолчанию —0.Подробнее см. в документации PostgreSQL
. -
Geqo selection bias
Консоль управленияAPIЗадает избирательное давление отбора внутри популяции, используемое в алгоритме GEQO
.Минимальное значение —
1.50, максимальное значение —2.00, значение по умолчанию —2.00.Подробнее см. в документации PostgreSQL
. -
Geqo threshold
Консоль управленияAPIАлгоритм GEQO
будет использоваться для планирования только таких запросов, в которых количество таблиц в предложенииFROM больше или равно значению данной настройки.Для выполнения небольших запросов обычно лучше использовать стандартный планировщик, работающий методом полного перебора. Но для запросов с большим количеством таблиц метод полного перебора может занять больше времени, чем использование не самого оптимального плана.
Минимальное значение —
2, максимальное значение —2147483647, значение по умолчанию —12.Подробнее см. в документации PostgreSQL
. -
Gin pending list limit
Все интерфейсыМаксимальный размер (в байтах) очереди записей индекса GIN
. Очередь используется, когда включен режимfastupdate. Если размер очереди превышает заданный предел, записи из нее массово переносятся в основную структуру данных индекса GIN, а очередь очищается.Минимальное значение —
64, максимальное значение —2147483647(2 ГБ), по умолчанию —4194304.Подробнее см. в документации PostgreSQL
. -
Hash mem multiplier
Консоль управленияAPITerraformОпределяет максимальный объем памяти, доступный для операций с хеш-таблицами. Объем вычисляется умножением значения настройки на значение Work mem.
Минимальное значение —
0.0, максимальное значение —1000.0, по умолчанию —1.0.Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Idle in transaction session timeout
Все интерфейсыВремя простоя открытой транзакции (в миллисекундах), при превышении которого будет завершена сессия с этой транзакцией.
Минимальное значение —
0, максимальное значение —2147483647, по умолчанию —0.Подробнее см. в документации PostgreSQL
. -
Jit
Консоль управленияAPITerraformВключает JIT-компиляцию запросов
(just-in-time compilation) для PostgreSQL. Если настройка включена, то SQL-запросы компилируются в машинный код прямо во время выполнения. Это ускорит выполнение сложных запросов, которые требовательны к ресурсам CPU.По умолчанию настройка выключена.
Подробнее см. в документации PostgreSQL
. -
Join collapse limit
Все интерфейсыПока количество элементов в списке
FROMне превышает значение настройки, планировщик будет переносить в список явные инструкцииJOIN(за исключениемFULL JOIN). При уменьшении значения сокращается время планирования, но план запроса может стать менее эффективным.Минимальное значение —
1, максимальное значение —2147483647, по умолчанию —8.Подробнее см. в документации PostgreSQL
. -
Lo compat privileges
Консоль управленияAPICLITerraformОтключает проверку прав доступа для больших объектов. До версии 9.0 права доступа не действовали на большие объекты, и они были доступны для чтения и записи всем пользователям. Включите настройку, если требуется совместимость с версиями PostgreSQL ниже 9.0.
По умолчанию настройка выключена (проверки прав доступа включены).
Подробнее см. в документации PostgreSQL
. -
Lock timeout
Все интерфейсыОпределяет, сколько ждать освобождения блокировки (в миллисекундах). Заблокированными могут быть: таблица, индекс, строка или другие объекты базы данных. Если время ожидания для какой-либо операции истекло, то она прерывается.
Минимальное значение —
0(контроль длительности отключен, ожидать получения блокировки можно сколь угодно долго), максимальное значение —2147483647, по умолчанию —1000.Подробнее см. в документации PostgreSQL
.Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно переопределить на уровне пользователя.
-
Log checkpoints
Все интерфейсыВключает логирование выполнения контрольных точек и точек перезапуска сервера.
По умолчанию настройка выключена (логирование не ведется).
Подробнее см. в документации PostgreSQL
. -
Log connections
Консоль управленияAPICLITerraformВключает логирование всех попыток подключения к серверу PostgreSQL, в том числе тех, для которых была успешно завершена аутентификация клиентов.
По умолчанию настройка выключена (логирование не ведется).
Подробнее см. в документации PostgreSQL
. -
Log disconnections
Консоль управленияAPICLITerraformВключает логирование завершения сессий.
По умолчанию настройка выключена (логирование не ведется).
Подробнее см. в документации PostgreSQL
. -
Log duration
Консоль управленияAPICLITerraformВключает логирование длительности каждой завершенной команды.
По умолчанию настройка выключена (логирование не выполняется).
Подробнее см. в документации PostgreSQL
. -
Log error verbosity
Консоль управленияAPICLITerraformЗадает уровень детализации информации в логе PostgreSQL для каждого сообщения. Уровни детализации лога в порядке увеличения информативности:
terse(LOG_ERROR_VERBOSITY_TERSEдля Terraform, CLI и API). Из сообщения об ошибке исключаются поляDETAIL,HINT,QUERYиCONTEXT.default(LOG_ERROR_VERBOSITY_DEFAULTдля Terraform, CLI и API). По умолчанию.verbose(LOG_ERROR_VERBOSITY_VERBOSEдля Terraform, CLI и API). В сообщение об ошибке включается код ошибкиSQLSTATE, а также имя файла с исходным кодом, имя функции и номер строки, сгенерировавшей ошибку.
Подробнее см. в документации PostgreSQL
. -
Log lock waits
Консоль управленияAPICLITerraformУправляет логированием продолжительных ожиданий блокировки. При включенной настройке в логе делается запись, когда в сессии PostgreSQL время ожидания получения блокировки превышает значение настройки Deadlock timeout.
По умолчанию настройка выключена.
Подробнее см. в документации PostgreSQL
. -
Log min duration sample
Консоль управленияAPITerraformНастройка работает так же, как Log min duration statement, но применяется только к командам, указанным в параметре Log statement sample rate.
При значении
0логируется время работы всех указанных команд.Минимальное значение —
-1(отключает логирование времени работы команд), максимальное значение —2147483647, по умолчанию —-1.Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Log min duration statement
Консоль управленияAPICLITerraformЗадает минимальное время работы команды (в миллисекундах), при котором команда будет записана в лог.
При значении
0логируется время работы всех команд.Минимальное значение —
-1(отключает логирование времени работы), максимальное значение —2147483647, по умолчанию —-1.Подробнее см. в документации PostgreSQL
.Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно переопределить на уровне пользователя.
-
Log min error statement
Консоль управленияAPICLITerraformОпределяет уровень логирования ошибок выполнения команд SQL. Сообщение о выполнении команды будет записано в лог, если он завершится ошибкой с указанным уровнем важности или выше. Возможные значения:
DEBUG5,DEBUG4,DEBUG3,DEBUG2,DEBUG1,INFO,NOTICE,WARNING,ERROR,LOG,FATALиPANIC.По умолчанию используется
ERROR. Это означает, что в лог PostgreSQL будут записаны все команды, завершившиеся сообщением с уровнем важностиERROR,LOG,FATALиPANIC.Чтобы отключить запись большинства команд с ошибками, выберите значение
PANIC.Подробнее см. в документации PostgreSQL
. -
Log min messages
Консоль управленияAPICLITerraformОпределяет уровень логирования PostgreSQL. Записываются все сообщения выбранного уровня важности и выше. Возможные значения (по возрастанию важности):
DEBUG5,DEBUG4,DEBUG3,DEBUG2,DEBUG1,INFO,NOTICE,WARNING,ERROR,LOG,FATALиPANIC.По умолчанию используется
WARNING. Это означает, что в лог PostgreSQL будут записаны все сообщения с уровнем важностиWARNING,ERROR,LOG,FATALиPANIC.Чтобы отключить запись большинства сообщений, выберите значение
PANIC.Подробнее см. в документации PostgreSQL
. -
Log parameter max length
Консоль управленияAPICLITerraformСокращает до указанного количества байтов значение каждого привязанного SQL-параметра, которые выводятся вместе с SQL-операторами при логировании всех сообщений, кроме сообщений об ошибках.
При значении
0логирование отключено.Минимальное значение —
-1(значения параметров логируются полностью), максимальное значение —1073741823. По умолчанию установлено минимальное значение.Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Log parameter max length on error
Все интерфейсыСокращает до указанного количества байтов значение каждого привязанного SQL-параметра, которые выводятся вместе с SQL-операторами при логировании сообщений об ошибках.
При значении
0логирование отключено.Минимальное значение —
-1(значения параметров логируются полностью), максимальное значение —1073741823. По умолчанию установлено минимальное значение.Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Log recovery conflict waits
Консоль управленияAPICLIРазрешает фиксировать в логах задержки репликации, возникающие из-за конфликтов восстановления при чтении WAL. Записи в лог будут добавлены, если время ожидания разрешения конфликта превысит таймаут, заданный настройкой Deadlock timeout.
По умолчанию настройка выключена.
Функциональность поддерживается в PostgreSQL начиная с версии 14.
Подробнее см. в документации PostgreSQL
. -
Log statement
Консоль управленияAPICLITerraformФильтр команд SQL, которые должны записываться в лог PostgreSQL:
none(LOG_STATEMENT_NONEдля Terraform, CLI и API) — фильтр отключен, команды SQL не записываются в лог.ddl(LOG_STATEMENT_DDLдля Terraform, CLI и API) — в лог записываются команды SQL, которые позволяют изменять определения структур данных (CREATE,ALTER,DROPи т. п.).mod(LOG_STATEMENT_MODдля Terraform, CLI и API) — в лог записываются команды SQL, попадающие под фильтрddl, и команды, позволяющие изменять данные (INSERT,UPDATEи т. п.).all(LOG_STATEMENT_ALLдля Terraform, CLI и API) — в лог записываются все команды SQL.
Значение по умолчанию —
none.Подробнее см. в документации PostgreSQL
.Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно переопределить на уровне пользователя.
-
Log statement sample rate
Консоль управленияAPITerraformДоля команд SQL, которые будут записываться в лог дополнительно (помимо команд, записываемых по другим причинам).
Минимальное значение —
0.0, максимальное значение —1.0, по умолчанию —0.0.Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Log temp files
Консоль управленияAPICLITerraformЗадает минимальный размер временного файла, при удалении которого информация о нем будет записана в лог PostgreSQL.
Минимальное значение —
-1(информация об удаленных файлах не логируется), максимальное значение —2147483647(2 ГБ), при значении0в лог записываются размеры и имена всех временных файлов. По умолчанию —-1.Подробнее см. в документации PostgreSQL
. -
Log transaction sample rate
Консоль управленияAPITerraformДоля транзакций, команды из которых будут записываться в лог дополнительно (помимо команд, записываемых по другим причинам).
Минимальное значение —
0.0, максимальное значение —1.0, по умолчанию —0.0.Функциональность поддерживается в PostgreSQL начиная с версии 12.
Подробнее см. в документации PostgreSQL
. -
Logical decoding work mem
Все интерфейсыМаксимальный объем памяти (в байтах), выделяемый для логического декодирования
перед записью на локальный диск. Настройка ограничивает объем памяти, используемый в соединении для логической репликации.Минимальное значение —
65536(64 КБ), максимальное значение —1099511627776(1 ТБ), по умолчанию –67108864(64 МБ).Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Maintenance io concurrency
Все интерфейсыМаксимальное число параллельных операций дискового ввода-вывода при обслуживании PostgreSQL командами
VACUUM,CREATE INDEXиALTER TABLE ADD FOREIGN KEY, в отдельной сессии работы с БД. Чем больше это число, тем больше команд обслуживания PostgreSQL будет пытаться выполнить параллельно в отдельной сессии.Минимальное значение —
0, максимальное значение —1000, по умолчанию —10.Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Maintenance work mem
Все интерфейсыМаксимальный объем памяти (в байтах) для операций обслуживания PostgreSQL, таких как
VACUUM,CREATE INDEXиALTER TABLE ADD FOREIGN KEY. Значение должно быть кратно 1024.Минимальное значение —
1048576(1 МБ), максимальное значение —137438953472(128 ГБ), по умолчанию —67108864(64 МБ).Подробнее см. в документации PostgreSQL
. -
Max connections
Консоль управленияAPICLITerraformМаксимальное число одновременных подключений к хосту PostgreSQL.
Минимальное значение —
1, максимальное значение и значение по умолчанию зависят от выбранного класса хостов и задаются формулой:200 × <количество_vCPU_на_одном_хосте>Для хостов с гарантированной долей vCPU ниже 100% (
burstable) используется фиксированное максимальное значение —200.По умолчанию установлено максимальное значение.
Важно
Managed Service for PostgreSQL резервирует 15 подключений для служебных пользователей на каждом PostgreSQL-хосте. Например, если для кластера выставлено значение настройки Max connections
100, то вы можете зарезервировать не больше 85 подключений для пользователей кластера.Подробнее см. в документации PostgreSQL
. -
Max locks per transaction
Консоль управленияAPICLITerraformСреднее количество объектов, которые могут быть заблокированы одной транзакцией. Отдельные транзакции могут блокировать больше объектов, если общее количество объектов, заблокированных всеми транзакциями, помещается в таблицу блокировок.
Минимальное значение —
10, максимальное значение —2147483647, по умолчанию —64.Подробнее см. в документации PostgreSQL
. -
Max logical replication workers
Консоль управленияМаксимальное число работающих процессов логической репликации PostgreSQL.
Минимальное значение —
4, максимальное значение —100. По умолчанию установлено минимальное значение.Подробнее см. в документации PostgreSQL
. -
Max parallel maintenance workers
Все интерфейсыМаксимальное число параллельно работающих процессов PostgreSQL, инициированных одной служебной командой (например,
CREATE INDEX).Минимальное значение —
0, максимальное значение —1024, по умолчанию —2.Подробнее см. в документации PostgreSQL
. -
Max parallel workers
Все интерфейсыМаксимальное число параллельно работающих процессов PostgreSQL.
Минимальное значение —
0, максимальное значение —1024, по умолчанию —8.Подробнее см. в документации PostgreSQL
. -
Max parallel workers per gather
Все интерфейсыМаксимальное число параллельно работающих процессов, которые могут запускаться одним узлом Gather
.Минимальное значение —
0, максимальное значение —1024, по умолчанию —2.Подробнее см. в документации PostgreSQL
. -
Max pred locks per transaction
Консоль управленияAPICLITerraformСреднее количество объектов, которые могут быть заблокированы предикатными блокировками
за одну транзакцию. Отдельные транзакции могут блокировать больше объектов, чем указано в настройке, если общее количество объектов, заблокированных всеми транзакциями, помещается в таблицу блокировок.Минимальное значение —
10, максимальное значение —2147483647(2 ГБ), по умолчанию —64.Подробнее см. в документации PostgreSQL
. -
Max prepared transactions
Консоль управленияAPICLITerraformМаксимальное число транзакций, которые могут одновременно находиться в подготовленном состоянии
.Минимальное значение —
0, максимальное значение —262143, по умолчанию —0.Подробнее см. в документации PostgreSQL
. -
Max replication slots
Консоль управленияМаксимальное число слотов репликации
. Слоты репликации автоматически обеспечивают механизм сохранения файлов лога WAL (Write-Ahead Log), пока они не будут получены всеми репликами.Минимальное значение —
20, максимальное значение —100. По умолчанию установлено минимальное значение.Подробнее см. в документации PostgreSQL
. -
Max slot wal keep size
Консоль управленияAPITerraformМаксимальный размер (в байтах) файлов лога WAL
(Write-Ahead Log), который хранится на хосте-мастере при репликации.Минимальное значение —
67108864(64 МБ). Максимальное значение — 50% от размера хранилища. Значение по умолчанию —-1(не ограничен). Значение должно быть кратно 1024.Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Max standby streaming delay
Все интерфейсыВремя ожидания (в миллисекундах), по истечении которого хост-реплика в режиме горячего резерва начнет отменять запросы, конфликтующие с очередными изменениями в WAL
.Минимальное значение —
-1(время ожидания не ограничено), максимальное значение —2147483647, по умолчанию —30000(30 секунд).Подробнее см. в документации PostgreSQL
. -
Max wal senders
Консоль управленияМаксимальное число параллельных соединений от хостов-источников потока репликации.
Минимальное значение —
20, максимальное значение —100. По умолчанию установлено минимальное значение.Подробнее см. в документации PostgreSQL
. -
Max wal size
Все интерфейсыМаксимальный размер (в байтах) файла WAL
, при достижении которого запускается снятие автоматических контрольных точек.Минимальное значение —
2, максимальное значение зависит от размера хранилища и равно 10% от этой величины, но не более8589934592(8 ГБ). По умолчанию установлено максимальное значение.Подробнее см. в документации PostgreSQL
. -
Max worker processes
Консоль управленияAPICLITerraformМаксимальное число фоновых процессов PostgreSQL, которое можно запустить в текущей системе.
Минимальное значение —
0, максимальное значение —1024, по умолчанию —8.Подробнее см. в документации PostgreSQL
. -
Min wal size
Все интерфейсыОбъем дискового пространства (в байтах), занимаемый WAL
, при превышении которого старые файлы WAL в контрольных точках удаляются.Минимальное значение —
2, максимальное значение зависит от размера хранилища и равно 5% от этой величины, но не более1073741824(1 ГБ). По умолчанию установлено максимальное значение.Подробнее см. в документации PostgreSQL
. -
Old snapshot threshold
Консоль управленияAPICLITerraformМинимальное время (в миллисекундах), в течение которого можно пользоваться снимком состояния для выполнения запроса без риска получить ошибку.
Минимальное значение —
-1(не ограничено), максимальное значение —86400000(24 часа), по умолчанию —-1.Подробнее см. в документации PostgreSQL
. -
Online analyze enable
Консоль управленияAPIВключает использование модуля
online_analyze, который обновляет статистику после операцийINSERT,UPDATE,DELETEилиSELECT INTOв целевых таблицах. -
Operator precedence warning
Все интерфейсыРазрешает анализатору запроса выдавать предупреждение для всех конструкций, которые поменяли поведение из-за изменения приоритетов команд в версии 9.5.
По умолчанию настройка выключена.
Функциональность не поддерживается в PostgreSQL начиная с версии 14.
Подробнее см. в документации PostgreSQL
. -
Parallel leader participation
Все интерфейсыРазрешает ведущему процессу выполнять план запроса ниже узлов Gather и Gather Merge, не ожидая рабочие процессы.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Pg hint plan debug print
Консоль управленияAPITerraformНастройка вывода и детализации отладочной информации модулем
pg_hint_plan. Действует при включенной настройке Pg hint plan enable hint. Возможные значения (по возрастанию детализации):off(PG_HINT_PLAN_DEBUG_PRINT_OFFдля Terraform и API) — вывод отключен;on(PG_HINT_PLAN_DEBUG_PRINT_ONдля Terraform и API) — по умолчанию;detailed(PG_HINT_PLAN_DEBUG_PRINT_DETAILEDдля Terraform и API);verbose(PG_HINT_PLAN_DEBUG_PRINT_VERBOSEдля Terraform и API).
-
Pg hint plan enable hint
Консоль управленияAPITerraformВключает использование модуля
pg_hint_planдля корректировки автоматических планов выполнения запросов, применяя так называемыеуказания
в виде простых описаний в особых SQL-комментариях. -
Pg hint plan enable hint table
Консоль управленияAPITerraformВключает использование таблицы
hint_plan.hints. Она содержитуказания
для модуляpg_hint_planи применяется, если нет возможности редактировать запросы. Таблица содержит столбцы:id— уникальный номер строки суказанием
. Этот столбец заполняется автоматически.norm_query_string— шаблон для выбора запросов, к которым будет относитьсяуказание
. Вместо констант используйте символ?. Пробельные символы в шаблоне являются значимыми.application_name— приложение-инициатор сессий, в которых будет действоватьуказание
.hint—указания
без обрамляющей разметки комментариев.
-
Pg hint plan message level
Консоль управленияAPITerraformУровень отладочных сообщений модуля
pg_hint_plan, которые будут попадать в лог PostgreSQL. Действует при включенной настройке Pg hint plan enable hint. Возможные значения:error;warning;notice;info(по умолчанию);log;debug.
-
Pg qualstats enabled
Консоль управленияAPICLIВключает использование модуля
pg_qualstatsдля сбора статистики по предикатам в операторахWHEREи блокахJOIN. Применяется для анализа наиболее часто вычисляемых предикатов запросов. -
Pg qualstats max
Консоль управленияAPICLIМаксимальное число отслеживаемых предикатов для модуля
pg_qualstats. Действует при включенной настройке Pg qualstats enabled.Минимальное значение —
100, максимальное значение —2147483647, по умолчанию —1000. -
Pg qualstats resolve oids
Консоль управленияAPICLIВключает восстановление имен таблиц по идентификатору
OIDв процессе сбора статистики запроса для модуляpg_qualstats. Настройка облегчает анализ данных, но требует больше дискового пространства для хранения статистики. Действует при включенной настройке Pg qualstats enabled.По умолчанию настройка выключена.
-
Pg qualstats sample rate
Консоль управленияAPICLIДоля запросов (число от 0 до 1), для которых выполняется сбор статистики модулем
pg_qualstats. Действует при включенной настройке Pg qualstats enabled. Особые значения настройки:0— отключает настройку;1— анализируются все запросы;-1— автоматический режим, доля запросов обратна к значению настройки Max connections и зависит от выбранного класса хостов.
По умолчанию используется значение
-1. -
Pg qualstats track constants
Консоль управленияAPICLIВключает отслеживание уже встреченных предикатов в последующих запросах при сборе статистики модулем
pg_qualstats. Действует при включенной настройке Pg qualstats enabled.По умолчанию настройка включена.
-
Plan cache mode
Консоль управленияAPITerraformОпределяет, какой тип плана запроса (общий или специализированный) будет использован при выполнении подготовленных команд
. Возможные значения:auto(PLAN_CACHE_MODE_AUTOдля Terraform и API) — автоматический выбор;force_custom_plan(PLAN_CACHE_MODE_FORCE_CUSTOM_PLANдля Terraform и API) — принудительно использовать специализированные планы;force_generic_plan(PLAN_CACHE_MODE_FORCE_GENERIC_PLANдля Terraform и API) — принудительно использовать общие планы.
Значение по умолчанию —
auto.Функциональность поддерживается в PostgreSQL начиная с версии 12.
Подробнее см. в документации PostgreSQL
. -
Plantuner fix empty table
Консоль управленияAPIРазрешает модулю
plantunerскрывать от планировщика отдельные индексы, чтобы они не использовались в планах запросов.По умолчанию настройка выключена.
-
Quote all identifiers
Все интерфейсыВключает принудительное обрамление кавычками всех идентификаторов при формировании SQL-запросов из базы данных, например, при выполнении операции
EXPLAIN.По умолчанию настройка выключена.
Подробнее см. в документации PostgreSQL
. -
Random page cost
Все интерфейсыЗадает планировщику примерную стоимость чтения одной произвольной страницы с диска. Если значение этой настройки меньше, чем у Seq page cost, планировщик отдаст предпочтение сканированию по индексу.
Минимальное значение —
0, по умолчанию —1.Подробнее см. в документации PostgreSQL
. -
Row security
Все интерфейсыУправляет обработкой запросов, к которым применима как минимум одна политика защиты строк
. При выключении настройки такие запросы будут выдавать ошибку.По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Search path
Все интерфейсыСписок имен схем БД через запятую. При обращении к объектам, размещенным в перечисленных схемах, можно не указывать имя схемы.
Значение по умолчанию —
$user, public(схема текущего пользователя и схемаpublic).Подробнее см. в документации PostgreSQL
. -
Seq page cost
Все интерфейсыЗадает планировщику примерную стоимость чтения одной страницы с диска при выполнении серии последовательных чтений.
Минимальное значение —
0, по умолчанию —1.Подробнее см. в документации PostgreSQL
. -
Session duration timeout
Консоль управленияAPICLIМаксимальное время жизни самой продолжительной активной сессии или транзакции (в миллисекундах). Применяется только для сессий в статусах
activeиidle in transaction.Чтобы настройка не влияла на производительность кластера, периодически проверяется самая длинная транзакция/сессия. Время между проверками выбирается случайным образом в интервале от 5 до 10 минут. Например, если задать значение настройки
1000, то сессия завершится в течение 1 секунды + 5–10 минут.Если задано значение больше чем значение по умолчанию, это может привести к увеличению размера БД и замедлению работы операционной системы.
Минимальное значение —
0(нет ограничений на время жизни активной сессии/транзакции), максимальное значение —2147483647, по умолчанию —43200000(12 часов). Минимальная гранулярность изменения настройки —1000.Подробнее о возможных статусах сессии см. в документации PostgreSQL
. -
Shared buffers
Консоль управленияAPICLITerraformОбъем памяти (в байтах), который PostgreSQL может использовать для буферов в разделяемой памяти (shared memory).
Минимальное значение —
131072(128 КБ), максимальное значение зависит от выбранного класса хостов и равно 80% от общего размера RAM хоста кластера Managed Service for PostgreSQL. По умолчанию установлено значение 25% от общего размера RAM, но не более 8 ГБ.Подробнее см. в документации PostgreSQL
. -
Shared preload libraries
Консоль управленияAPITerraformРазделенные запятыми имена библиотек общего пользования (shared libraries), которые будут загружаться при запуске сервера PostgreSQL. Библиотеки требуются для работы некоторых расширений PostgreSQL.
Подробнее см. в документации PostgreSQL
. -
Standard conforming strings
Консоль управленияAPITerraformВключает прочтение символа
\в обычных строковых константах ('...') не как спецсимвола, а как обычного символа согласно стандарту SQL.По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Statement timeout
Консоль управленияAPICLITerraformМаксимальная длительность (в миллисекундах) выполнения команды, при превышении которой команда прерывается.
Минимальное значение —
0, максимальное значение —2147483647, по умолчанию —0.Подробнее см. в документации PostgreSQL
. -
Synchronize seqscans
Все интерфейсыВключает синхронизацию обращений при последовательном сканировании больших таблиц, чтобы эти операции читали один блок примерно в одно и то же время. При выключении последовательное сканирование всегда будет начинаться с начала таблицы, как это было принято до версии 8.3.
По умолчанию настройка включена.
Подробнее см. в документации PostgreSQL
. -
Synchronous commit
Все интерфейсыОпределяет, после какого этапа обработки WAL
сервер посчитает транзакцию завершенной.Допустимые значения:
Консоль управления/CLITerraformAPIon— транзакция подтверждается, если WAL записан на диск мастера и на диск каждой кворумной реплики.off— транзакция подтверждается, даже если данные еще не попали в WAL. Запись несинхронна, данные о транзакции могут быть потеряны в результате сбоя дисковой подсистемы.local— транзакция подтверждается, если WAL записан на диск мастера.remote_write— транзакция подтверждается, если WAL записан на диск мастера, все кворумные реплики приняли WAL и передали его операционной системе для записи на диск. В случае потери дисковой системы мастера и сбоя операционной системы на кворумных репликах данные транзакции с таким уровнем синхронизации могут быть утеряны.remote_apply— транзакция подтверждается, если WAL записан на диск мастера, все кворумные реплики приняли WAL и применили изменения из него.
Значение по умолчанию —
on.1или"SYNCHRONOUS_COMMIT_ON"— транзакция подтверждается, если WAL записан на диск мастера и на диск каждой кворумной реплики.2или"SYNCHRONOUS_COMMIT_OFF"— транзакция подтверждается, даже если данные еще не попали в WAL. Запись несинхронна, данные о транзакции могут быть потеряны в результате сбоя дисковой подсистемы.3или"SYNCHRONOUS_COMMIT_LOCAL"— транзакция подтверждается, если WAL записан на диск мастера.4или"SYNCHRONOUS_COMMIT_REMOTE_WRITE"— транзакция подтверждается, если WAL записан на диск мастера, все кворумные реплики приняли WAL и передали его операционной системе для записи на диск. В случае потери дисковой системы мастера и сбоя операционной системы на кворумных репликах данные транзакции с таким уровнем синхронизации могут быть утеряны.5или"SYNCHRONOUS_COMMIT_REMOTE_APPLY"— транзакция подтверждается, если WAL записан на диск мастера, кворумные реплики приняли WAL и применили изменения из него.
Значение по умолчанию —
"SYNCHRONOUS_COMMIT_ON".SYNCHRONOUS_COMMIT_ON— транзакция подтверждается, если WAL записан на диск мастера и на диск каждой кворумной реплики.SYNCHRONOUS_COMMIT_OFF— транзакция подтверждается, даже если данные еще не попали в WAL. Запись несинхронна, данные о транзакции могут быть потеряны в результате сбоя дисковой подсистемы.SYNCHRONOUS_COMMIT_LOCAL— транзакция подтверждается, если WAL записан на диск мастера.SYNCHRONOUS_COMMIT_REMOTE_WRITE— транзакция подтверждается, если WAL записан на диск мастера, все кворумные реплики приняли WAL и передали его операционной системе для записи на диск. В случае потери дисковой системы мастера и сбоя операционной системы на кворумных репликах данные транзакции с таким уровнем синхронизации могут быть утеряны.SYNCHRONOUS_COMMIT_REMOTE_APPLY— транзакция подтверждается, если WAL записан на диск мастера, все кворумные реплики приняли WAL и применили изменения из него.
Значение по умолчанию —
SYNCHRONOUS_COMMIT_ON.Подробнее см. в документации PostgreSQL
.Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно переопределить на уровне пользователя.
-
Temp buffers
Все интерфейсыМаксимальный объем памяти (в байтах), выделяемой для временных буферов в каждой сессии.
Минимальное значение —
100, максимальное значение —1073741823(1 ГБ), по умолчанию —8388608(8 МБ).Подробнее см. в документации PostgreSQL
. -
Temp file limit
Консоль управленияAPICLITerraformМаксимальный объем дискового пространства (в байтах), который один процесс сможет использовать для временных файлов. Транзакция, которая попытается превысить этот предел, будет отменена.
Большие запросы выполняются не в оперативной памяти, а на диске. Слишком большие запросы нагружают диск и мешают выполнению других запросов. Настройка предотвращает выполнение запросов, которые снижают производительность, ограничивая размер временных файлов.
Минимальное значение —
-1(нет ограничений), максимальное значение —2147483647(2 ГБ), по умолчанию —-1.Подробнее см. в документации PostgreSQL
.Настройка действует на уровне кластера Managed Service for PostgreSQL, но ее можно переопределить на уровне пользователя.
-
Timezone
Все интерфейсыЧасовой пояс для вывода и ввода значений времени.
Значение по умолчанию —
Europe/Moscow.Подробнее см. в документации PostgreSQL
. -
Track activity query size
Консоль управленияAPITerraformОбъем памяти (в байтах), резервируемой в каждой активной сессии для хранения текста выполняемой в данной момент команды.
Минимальное значение —
100, максимальное значение —102400, по умолчанию —1024.Подробнее см. в документации PostgreSQL
. -
Transform null equals
Все интерфейсыВключает интерпретацию условия
выражение = NULLкаквыражение IS NULL. Условие истинно, если выражение имеет значениеNULL, и ложно в противном случае. Согласно стандарту SQL, сравнениевыражение = NULLвсегда возвращаетNULL(неизвестное значение).По умолчанию настройка выключена (действует стандарт SQL).
Подробнее см. в документации PostgreSQL
. -
Vacuum cleanup index scale factor
Все интерфейсыДоля строк в индексе, попавших в предыдущий срез статистики. При выполнении операции
VACUUMстатистика индекса считается устаревшей, если отношение числа добавляемых в индекс строк к текущему числу строк в индексе превышает указанную долю. В этом случае будет выполнено новое сканирование индекса.Минимальное значение —
0.0, максимальное значение —10000000000.0, по умолчанию —0.1.Функциональность не поддерживается в PostgreSQL начиная с версии 14.
Подробнее см. в документации PostgreSQL
. -
Vacuum cost delay
Все интерфейсыВремя (в миллисекундах), в течение которого будет простаивать процесс выполнения команд
VACUUMиANALYZE, превысивший предел стоимости (см. настройку Vacuum cost limit).Минимальное значение —
0, максимальное значение —100, по умолчанию —0.Подробнее см. в документации PostgreSQL
. -
Vacuum cost limit
Все интерфейсыПредел стоимости, при накоплении которой процесс очистки
VACUUMбудет приостанавливаться (переходить в спящий режим).Минимальное значение —
1, максимальное значение —10000, по умолчанию —200.Подробнее см. в документации PostgreSQL
. -
Vacuum cost page dirty
Все интерфейсыУсловная стоимость такой операции очистки
VACUUM, при которой изменяется блок, не модифицированный ранее.Минимальное значение —
0, максимальное значение —10000, по умолчанию —20.Подробнее см. в документации PostgreSQL
. -
Vacuum cost page hit
Все интерфейсыУсловная стоимость очистки буфера, оказавшегося в общем кеше.
Минимальное значение —
0, максимальное значение —10000, по умолчанию —1.Подробнее см. в документации PostgreSQL
. -
Vacuum cost page miss
Все интерфейсыУсловная стоимость очистки буфера, который нужно прочитать с диска.
Минимальное значение —
0, максимальное значение —10000, по умолчанию —10.Подробнее см. в документации PostgreSQL
. -
Vacuum failsafe age
Консоль управленияAPICLIМаксимальный возраст
замороженной
(уже завершенной) транзакции, измеряемый в количестве транзакций, запущенных после нее. По достижении этого показателя запускается очистка процессомVACUUM, чтобы избежать переполнения счетчика транзакций.Минимальное значение —
0, максимальное значение —2100000000, по умолчанию —1600000000.Функциональность поддерживается в PostgreSQL начиная с версии 14.
Подробнее см. в документации PostgreSQL
. -
Vacuum multixact failsafe age
Консоль управленияAPICLIМаксимальный возраст
замороженной
(уже завершенной) мультитранзакции , измеряемый в количестве мультитранзакций, запущенных после нее. По достижении этого показателя запускается очистка процессомVACUUM, чтобы избежать переполнения счетчика мультитранзакций.Минимальное значение —
0, максимальное значение —2100000000, по умолчанию —1600000000.Функциональность поддерживается в PostgreSQL начиная с версии 14.
Подробнее см. в документации PostgreSQL
. -
Wal keep size
Консоль управленияAPITerraformМинимальный размер устаревших сегментов лога (в байтах), сохраняемых в папке WAL
, чтобы при необходимости реплики могли их загрузить.Минимальное значение —
0(прошлые фрагменты не сохраняются для репликации), максимальное значение —2251799812636672(2 ТБ), по умолчанию —0.Функциональность поддерживается в PostgreSQL начиная с версии 13.
Подробнее см. в документации PostgreSQL
. -
Work mem
Все интерфейсыБазовый объем памяти (в байтах), который будет использоваться во внутренних операциях при обработке запросов (например, для сортировки или хеш-таблиц), прежде чем будут задействованы временные файлы на диске.
Минимальное значение —
64, максимальное значение —2147483647(2 ГБ), по умолчанию —4194304(4 МБ).Подробнее см. в документации PostgreSQL
. -
Xmlbinary
Все интерфейсыСпособ кодирования двоичных данных в XML. Возможные значения:
base64(XML_BINARY_BASE64для Terraform, API и CLI) — BASE64-кодирование;hex(XML_BINARY_HEXдля Terraform, API и CLI) — шестнадцатеричное кодирование.
Значение по умолчанию —
base64.Подробнее см. в документации PostgreSQL
. -
Xmloption
Все интерфейсыТип преобразования XML-данных в символьные по умолчанию. Возможные значения:
document(XML_OPTION_DOCUMENTдля Terraform, API и CLI) — XML-документ;content(XML_OPTION_CONTENTдля Terraform, API и CLI) — фрагмент XML-документа.
Значение по умолчанию —
content.Подробнее см. в документации PostgreSQL
.
Настройки на уровне пользователя
Эти настройки влияют на поведение PostgreSQL при работе с запросами пользователя:
-
Catchup timeout
Консоль управленияTerraformAPIМаксимально допустимое время отставания реплики от мастера (в секундах).
Если задано ненулевое значение настройки, то менеджер подключений Odyssey не разрешит подключиться к репликам, которые сильно отстают от мастера. Этот механизм позволяет защититься от чтения устаревших данных с таких реплик.
Odyssey периодически запрашивает у кластера информацию об отставании реплик. При попытке подключения к реплике, которая отстает от мастера на большее время, чем указано в настройке, подключение будет прервано. Odyssey вернет сообщение вида:
remote server read/write error: failed to wait replica for catchupМинимальное значение и значение по умолчанию —
0(можно подключиться к любым репликам вне зависимости от того, насколько они отстают от мастера). -
Conn limit
Консоль управленияAPICLIВ транзакционном пулинге (transaction pooling) настройка ограничивает количество одновременных активных соединений для пользователя. При использовании этого типа пулинга пользователь может открыть тысячи соединений, но одновременно работать смогут только
Nсоединений, гдеN— значение настройки.В сессионном пулинге (session pooling) настройка ограничивает количество соединений пользователя с каждым хостом в кластере PostgreSQL. При использовании этого типа пулинга значение настройки должно быть не меньше суммы всех соединений, которые могут быть открыты бэкендами пользовательского сервиса. Каждое открытое серверное соединение немного замедляет работу PostgreSQL на OLTP-нагрузке.
Для сессионного пулинга применяются следующие принципы:
-
При добавлении пользователя Managed Service for PostgreSQL по умолчанию резервирует для него 50 подключений к каждому хосту в кластере PostgreSQL. Минимальное количество подключений на пользователя — 1.
-
Суммарное количество подключений, зарезервированных для пользователей, не должно превышать значение параметра Max connections. Managed Service for PostgreSQL резервирует 15 служебных подключений на каждом хосте.
Например, если для кластера задана настройка
"max_connections": 100, то вы можете зарезервировать не больше 85 подключений для пользователей на каждый хост кластера. -
Рекомендуется разнести по разным пользователям разные сервисы, использующие PostgreSQL, и задать нужное значение настройки для каждого пользователя. Если при проблемах в одном сервисе возникнет большое количество соединений, другие сервисы не будут затронуты и смогут подключаться к PostgreSQL.
Эта настройка зависит от выбранного класса хостов.
-
-
Default transaction isolation
Консоль управленияAPICLIСм. описание настройки уровня кластера Default transaction isolation.
-
Grants
Консоль управленияAPICLITerraformНабор ролей, выданных пользователю.
-
Lock timeout
Консоль управленияAPICLIСм. описание настройки уровня кластера Lock timeout.
-
Log min duration statement
Консоль управленияAPICLIСм. описание настройки уровня кластера Log min duration statement.
Рекомендуется определить для каждого сервиса и соответствующего ему пользователя, что считается медленным выполнением запроса, и логировать только такие запросы. Например, для веб-сервиса медленным может считаться запрос, выполняющийся более одной секунды, а для сервиса построения отчетов — запрос, выполняющийся более 10 минут.
Подробнее см. в документации PostgreSQL
. -
Log statement
Консоль управленияAPICLIСм. описание настройки уровня кластера Log statement.
-
Login
Консоль управленияAPICLIОпределяет, может ли пользователь подключаться к кластеру PostgreSQL.
Значение по умолчанию —
true(пользователь может подключаться к кластеру). -
Pg audit log
Консоль управленияОпределяет, какие запросы пользователя попадут в лог для аудита.
Настройка имеет силу только если:
- к кластеру подключена библиотека
pgaudit; - к базе данных подключено расширение
pgaudit.
Возможные значения:
read— в лог попадут запросыSELECTиCOPY, когда источником данных выступает отношение или запрос.write— в лог попадут запросыINSERT,UPDATE,DELETE,TRUNCATEиCOPY, когда приемником данных выступает отношение.function— в лог попадут вызовы функций и блокиDO.role— в лог попадут выражения, связанные с управлением ролями и привилегиями:GRANT,REVOKE,CREATE/ALTER/DROP ROLE.ddl— в лог попадут всеDDL, которые не входят в классROLE.misc— в лог попадут вспомогательные команды:DISCARD,FETCH,CHECKPOINT,VACUUM,SET.misc_set— в лог попадут вспомогательные командыSET, например,SET ROLE.
Можно выбрать несколько значений. По умолчанию логи аудита для пользователя отключены.
Подробнее о настройке логов для аудита см. в разделе Использование pgaudit.
- к кластеру подключена библиотека
-
Pooling mode
Консоль управленияTerraformAPIПримечание
- В Terraform и gRPC API используется имя настройки
pool_mode. - В REST API используется имя настройки
poolMode.
Режим управления соединениями, который использует менеджер соединений Odyssey.
Возможные значения:
SESSION— сессионный режим.TRANSACTION— транзакционный режим.STATEMENT— режим запроса.
Значение по умолчанию —
SESSION. - В Terraform и gRPC API используется имя настройки
-
Prepared statements pooling
Консоль управленияРазрешает использовать подготовленные инструкции с объединением транзакций.
-
Synchronous commit
Консоль управленияAPICLIСм. описание настройки уровня кластера Synchronous commit.
-
Temp file limit
Консоль управленияAPICLIСм. описание настройки уровня кластера Temp file limit.
-
Wal sender timeout
Консоль управленияВремя (в миллисекундах), по истечении которого прерываются неактивные соединения репликации.
Функциональность поддерживается в PostgreSQL начиная с версии 12.