Документ описывает параметры конфигурации системы в категории Потребление ресурсов.
Примечание!
Для обеспечения стабильности и безопасности системы ручное изменение этих параметров должно выполняться с осторожностью.
Параметры потребления ресурсов классифицируются следующим образом:
Задаёт максимальный объём памяти (в КБ), который может использовать каждый процесс-работник autovacuum.
VACUUM при выполнении в других контекстах.-1, что означает использование значения maintenance_work_mem.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | -1 | -1 ~ (INT_MAX/1024) | сегменты; система; перезагрузка |
Задаёт реализацию динамической разделяемой памяти, которую должен использовать сервер.
posix (для разделяемой памяти POSIX, выделяемой через shm_open), sysv (для разделяемой памяти System V, выделяемой через shmget), windows (для разделяемой памяти Windows) и mmap (симулированная разделяемая память с использованием файлов с отображением памяти, хранящихся в каталоге данных). Не все значения поддерживаются на всех платформах. Первый поддерживаемый вариант на платформе является значением по умолчанию.mmap не является значением по умолчанию ни на одной платформе и в целом не рекомендуется, поскольку операционная система многократно записывает изменённые страницы обратно на диск, увеличивая нагрузку на ввод-вывод системы.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| enum | posix | posix, sysv, windows, mmap | сегменты; система; перезапуск |
Задаёт максимальный процент системных ресурсов памяти, который может быть выделен группам ресурсов на каждом узле Segment YMatrix базы данных.
| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| вещественное число | 0.7 | 0.1 ~ 1.0 | сегменты; система; перезапуск |
Задаёт общий объём памяти (в МБ), который могут использовать все процессы postgres на активном экземпляре Segment.
Примечание: Параметр конфигурации gp_vmem_protect_limit вступает в силу только при включённом управлении ресурсами Очередями ресурсов.
Если запрос приводит к превышению этого лимита, дополнительная память не выделяется, и запрос завершается с ошибкой.
При задании этого параметра указывайте только числовое значение. Например, для установки 4096 МБ используйте 4096, не добавляйте единицу измерения MB.
Чтобы предотвратить чрезмерное выделение памяти, используйте следующие расчёты для оценки безопасного значения gp_vmem_protect_limit. Сначала вычислите gp_vmem, представляющий объём памяти YMatrix базы данных, доступный на хосте:
``
gp_vmem = ((SWAP + RAM) – (7.5GB + 0.05 * RAM)) / 1.7
` гдеSWAPиRAM` — объём подкачки и физической памяти хоста в ГБ соответственно.
Затем вычислите acting_primary_segments — максимальное количество первичных узлов, которые могут работать на одном хосте при активации зеркал из-за сбоя кластера. Например, если зеркала расположены в блоках по 4 хоста с 8 первичными узлами на каждом, сбой одного узла Segment активирует 2 или 3 зеркала на каждом оставшемся хосте в блоке.
Для этой конфигурации значение acting_primary_segments равно 11 (8 первичных узлов плюс 3 активированных зеркала при сбое).
Затем вычислите gp_vmem_protect_limit. Результат должен быть в МБ:
``
gp_vmem_protect_limit = gp_vmem / acting_primary_segments
``
Для рабочих нагрузок, генерирующих множество временных файлов, используйте следующую формулу для корректировки gp_vmem:
``
gp_vmem = ((SWAP + RAM) – (7.5GB + 0.05 * RAM - (300KB * total_#_workfiles))) / 1.7
``
На основе значения gp_vmem можно вычислить параметр ядра vm.overcommit_ratio:
``
vm.overcommit_ratio = (RAM - (0.026 * gp_vmem)) / RAM
``
Примечание: Значение по умолчанию параметра ядра vm.overcommit_ratio в Red Hat Enterprise Linux — 50.
При развертывании с помощью графического инструмента этот параметр автоматически рассчитывается на основе аппаратных характеристик сервера. При развертывании через командную строку значение по умолчанию — 50.
| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 8192 | 0 ~ (INT_MAX/2) | сегменты; система; перезапуск |
Если процесс-исполнитель запроса потребляет больше памяти, чем указано в этом параметре (в МБ), процесс не будет кэшироваться для повторного использования после завершения.
| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 500 | 1 ~ (INT_MAX/2) | сегменты; система; перезапуск |
Задаёт максимальное количество временных файлов-переполнений (также называемых workfiles), разрешённых для одного запроса на каждом Segment.
-1, чтобы разрешить неограниченное количество файлов-переполнений.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 100000 | 0 ~ INT_MAX | мастер; сессия; перезагрузка |
Задаёт максимальный объём дискового пространства (в КБ), разрешённый для временных файлов-переполнений, создаваемых одним запросом на каждом Segment.
0, что означает отсутствие ограничения.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 0 | 0 ~ INT_MAX | мастер; сессия; перезагрузка |
Задаёт максимальный общий объём дискового пространства (в КБ), разрешённый для всех выполняющихся запросов на создание временных файлов-переполнений на каждом Segment.
0, что означает отсутствие ограничения.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 0 | 0 ~ INT_MAX | сегменты; система; перезапуск |
Управляет запросом на использование больших страниц для основной области разделяемой памяти.
try (по умолчанию), on и off. Если установлено значение try, сервер пытается запросить большие страницы и переходит на метод по умолчанию, если запрос не удаётся. Если установлено значение on, отказ в выделении больших страниц препятствует запуску сервера. Если установлено значение off, большие страницы не запрашиваются.on игнорируется.gpedit.msc). Чтобы запустить сервер базы данных как один процесс (а не как службу Windows) из командного окна, окно должно запускаться от имени администратора, либо необходимо отключить контроль учётных записей (UAC). При включённом UAC стандартные командные окна отменяют привилегию «Lock Pages in Memory» при запуске.huge_pages).| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| enum | try | on/off/true/false/yes/no/1/0/try | сегменты; система; перезапуск |
Задаёт максимальный объём памяти (в КБ), используемый для операций обслуживания, таких как VACUUM, CREATE INDEX и ALTER TABLE ADD FOREIGN KEY.
work_mem, безопасна.VACUUM и восстановления базы данных.65536, то есть 64 МБ.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 65536 | 1024 ~ (INT_MAX/1024) | мастер; сессия; перезагрузка |
Задаёт максимальное количество транзакций, которые могут одновременно находиться в состоянии подготовки (см. PREPARE TRANSACTION).
max_prepared_transactions как минимум равным max_connections, чтобы каждая сессия могла иметь одну ожидающую подготовленную транзакцию. Если подготовленные транзакции не используются, установите это значение в 0.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 50 | 1 ~ 262143 | сегменты; система; перезапуск |
Задаёт максимально безопасную глубину стека выполнения сервера (в КБ).
ulimit -s или его аналог на платформе), минус примерно 1 МБ для безопасности. Этот запас необходим, поскольку не все серверные процедуры проверяют глубину стека — только критические, потенциально рекурсивные процедуры.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 100 | 100 ~ (INT_MAX/1024) | сегменты; сессия; перезагрузка; суперпользователь |
Задаёт порог памяти. Если выделенная память превышает этот порог (в МБ), она будет выгружена.
| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 1024 | 1 ~ (INT_MAX/2) | мастер; сессия; перезагрузка |
Выводит только выделения памяти, превышающие значение этого параметра (в МБ).
| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 1 | 0 ~ (INT_MAX/2) | мастер; сессия; перезагрузка |
Задаёт объём разделяемых буферов памяти, используемых сервером YMatrix базы данных (в БЛОКАХ).
PG:
16 и не менее 16MB. Для лучшей производительности обычно используются значения значительно выше минимальных.shared_buffers является 25% объёма системной памяти. Некоторые рабочие нагрузки могут извлечь выгоду из ещё более высоких значений. Для распределения обработки большого объёма новых или изменённых данных во времени более высокие значения shared_buffers часто требуют соответствующего увеличения checkpoint_segments.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 4096 | 16 ~ (INT_MAX/2) | сегменты; система; перезапуск |
Задаёт реализацию разделяемой памяти, используемую для основной области разделяемой памяти, включая разделяемые буферы YMatrix и другие общие данные.
mmap (анонимная разделяемая память, выделяемая через mmap), sysv (разделяемая память System V через shmget) и windows (разделяемая память Windows). Не все значения поддерживаются на всех платформах; первый поддерживаемый вариант является значением по умолчанию для платформы. Опция sysv не является значением по умолчанию ни на одной платформе и в целом не рекомендуется, поскольку часто требует нестандартных настроек ядра для разрешения выделения больших адресных пространств.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| enum | mmap | mmap, sysv, windows | сегменты; система; перезапуск |
Задаёт максимальный объём памяти (в БЛОКАХ), используемый для временных буферов в каждой сессии базы данных.
temp_buffers.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 1024 | 100 ~ (INT_MAX/2) | мастер; сессия; перезагрузка |
Задаёт максимальный объём памяти (в КБ), который могут использовать операции запроса (например, сортировка или хеш-таблицы) до записи во временные файлы на диск.
ORDER BY, DISTINCT и слияние соединений, используют сортировку, а хеш-соединения, хеш-агрегаты и хеш-обработка подзапросов IN используют хеш-таблицы. Каждая выполняемая операция может использовать до указанного в этом параметре объёма памяти до переполнения во временные файлы.work_mem. Это ключевой фактор при настройке этого параметра.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 32768 | 64 ~ (INT_MAX/1024) | мастер; сессия; перезагрузка |
Задаёт максимальный объём дискового пространства (в КБ), который процесс может использовать для временных файлов (например, временных файлов сортировки и хеширования или файлов, используемых для хранения курсоров).
-1, что означает отсутствие ограничения.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | -1 | -1 или 0 ~ INT_MAX | сегменты; сессия; перезагрузка; суперпользователь |
Устанавливает максимальное количество файлов, которые каждый дочерний процесс сервера может одновременно иметь открытыми.
too many open files, уменьшите эту настройку.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 1000 | 25 ~ INT_MAX | сегменты; система; перезагрузка |
Во время выполнения команд VACUUM и ANALYZE система поддерживает внутренний счётчик, отслеживающий оценочную стоимость различных операций ввода-вывода. Когда накопленная стоимость достигает предела, заданного параметром vacuum_cost_limit, процесс, выполняющий операцию, приостанавливается на короткое время, указанное в vacuum_cost_delay. Затем счётчик сбрасывается, и процесс продолжается.
Цель этой функции — позволить администраторам снизить влияние операций ввода-вывода этих команд на параллельную активность базы данных. Во многих случаях не важно, насколько быстро завершатся команды обслуживания, такие как VACUUM и ANALYZE; важно, чтобы они не оказывали существенного влияния на способность системы выполнять другие операции с базой данных. Задержка очистки на основе стоимости предоставляет администраторам возможность обеспечить это.
Для команд VACUUM, выполненных вручную, эта функция отключена по умолчанию. Чтобы включить её, установите переменную vacuum_cost_delay в ненулевое значение.
Время (в миллисекундах), на которое процесс приостанавливается при превышении лимита стоимости.
0, что отключает задержку очистки на основе стоимости. Положительные значения включают очистку на основе стоимости.vacuum_cost_delay обычно очень малы.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| вещественное | 0 | 0 ~ 100 | сегменты; сессия; перезагрузка |
Накопленная стоимость, при достижении которой процесс очистки приостанавливается.
| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 200 | 1 ~ 10000 | сегменты; сессия; перезагрузка |
Оценочная стоимость очистки буфера, который делает ранее чистый блок грязным. Она отражает дополнительные операции ввода-вывода, необходимые для записи грязного блока на диск.
| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 20 | 0 ~ 10000 | сегменты; сессия; перезагрузка |
Оценочная стоимость очистки буфера, найденного в общем кэше. Она отражает стоимость блокировки пула буферов, поиска в общей хеш-таблице и сканирования содержимого страницы.
| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 1 | 0 ~ 10000 | сегменты; сессия; перезагрузка |
Стоимость очистки буфера, который необходимо считать с диска. Она отражает стоимость блокировки пула буферов, поиска в общей хеш-таблице, чтения требуемого блока с диска и сканирования его содержимого.
| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 10 | 0 ~ 10000 | сегменты; сессия; перезагрузка |
Когда бэкенд записывает больше этого объёма данных (в БЛОКАХ), он пытается заставить ОС сбросить эти записи на нижележащее хранилище.
fsync) или при фоновом сбросе больших пакетов ОС. Часто это значительно снижает задержку транзакций, хотя в некоторых случаях производительность может ухудшиться (особенно при нагрузке, превышающей shared_buffers, но остающейся ниже кэша страниц ОС).0, что отключает принудительный сброс.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 0 | 0 ~ 256 | сегменты; сессия; перезагрузка |
Устанавливает количество одновременных операций ввода-вывода диска, которые YMatrix может выполнять параллельно.
1 до 1000, или 0 для отключения асинхронных запросов ввода-вывода.aio_write (некоторые операционные системы могут её не иметь). Установка этого параметра в любое значение, отличное от 0, вызовет ошибку, если функция отсутствует. На некоторых системах (например, Solaris) функция существует, но ничего не делает.1 на поддерживаемых системах, иначе — 0.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 1 | 0 ~ 1000 | сегменты; сессия; перезагрузка |
Устанавливает максимальное количество параллельных рабочих процессов, которые может запустить одна команда утилиты.
max_worker_processes, управляемого параметром max_parallel_workers. Примечание: Запрошенное количество рабочих процессов может быть недоступно во время выполнения. В этом случае операция утилиты выполняется с меньшим числом рабочих процессов, чем планировалось.2. Установка этого параметра в 0 отключает параллельные рабочие процессы для команд утилит.maintenance_work_mem, как лимит для всей команды независимо от количества используемых параллельных рабочих процессов. Однако параллельные команды утилит могут по-прежнему потреблять больше ресурсов ЦП и пропускной способности ввода-вывода.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 2 | 0 ~ 1024 | сегменты; сессия; перезагрузка |
Устанавливает максимальное количество рабочих процессов, поддерживаемых системой для параллельных операций.
max_worker_processes и max_parallel_maintenance_workers.max_worker_processes не имеет эффекта, поскольку параллельные рабочие процессы берутся из пула, созданного max_worker_processes.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 64 | 0 ~ 1024 | сегменты; сессия; перезагрузка |
Устанавливает максимальное количество рабочих процессов, которые может запустить один узел Gather или Gather Merge.
max_worker_processes, и ограничиваются max_parallel_workers.2. Установка этого параметра в 0 отключает выполнение параллельных запросов.work_mem). Ограничения ресурсов, такие как work_mem, применяются независимо к каждому рабочему процессу, что означает, что общее потребление ресурсов всеми процессами может быть значительно выше. Например, параллельный запрос с 4 рабочими процессами может использовать до 5 раз больше времени ЦП, памяти и пропускной способности ввода-вывода, чем непараллельный запрос.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 2 | 0 ~ 1024 | мастер; сессия; перезагрузка |
Устанавливает максимальное количество фоновых процессов, которые система может поддерживать.
max_parallel_workers и max_parallel_maintenance_workers.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | 69 | 1 ~ 262143 | сегменты; система; перезагрузка |
Устанавливает минимальный возраст (в минутах), который может достигнуть снимок, прежде чем при его использовании возникнет ошибка old snapshot.
-1 (по умолчанию) отключает эту функцию, фактически устанавливая срок жизни снимка как бесконечный.5 или 10), так как они могут быть полезны для тестирования. Хотя допускаются значения до 86400 (60 дней), имейте в виду, что при многих рабочих нагрузках значительное раздувание или переполнение идентификаторов транзакций могут возникнуть за гораздо более короткие сроки.old snapshot. Всё пространство, выделенное отношению, остаётся с ним для повторного использования, пока не будет явно освобождено (например, через VACUUM FULL).old snapshot при сканировании.| Тип данных | Значение по умолчанию | Диапазон | Контекст |
|---|---|---|---|
| int | -1 | -1 ~ 86400 | сегменты; система; перезагрузка |