Потребление ресурсов

Документ описывает параметры конфигурации системы в категории Потребление ресурсов.

Примечание!
Для обеспечения стабильности и безопасности системы ручное изменение этих параметров должно выполняться с осторожностью.

Параметры потребления ресурсов классифицируются следующим образом:


Память

autovacuum_work_mem


Задаёт максимальный объём памяти (в КБ), который может использовать каждый процесс-работник autovacuum.

  • Эта настройка не влияет на поведение VACUUM при выполнении в других контекстах.
  • Значение по умолчанию — -1, что означает использование значения maintenance_work_mem.
Тип данных Значение по умолчанию Диапазон Контекст
int -1 -1 ~ (INT_MAX/1024) сегменты; система; перезагрузка

dynamic_shared_memory_type


Задаёт реализацию динамической разделяемой памяти, которую должен использовать сервер.

  • Поддерживаемые варианты: posix (для разделяемой памяти POSIX, выделяемой через shm_open), sysv (для разделяемой памяти System V, выделяемой через shmget), windows (для разделяемой памяти Windows) и mmap (симулированная разделяемая память с использованием файлов с отображением памяти, хранящихся в каталоге данных). Не все значения поддерживаются на всех платформах. Первый поддерживаемый вариант на платформе является значением по умолчанию.
  • Опция mmap не является значением по умолчанию ни на одной платформе и в целом не рекомендуется, поскольку операционная система многократно записывает изменённые страницы обратно на диск, увеличивая нагрузку на ввод-вывод системы.
Тип данных Значение по умолчанию Диапазон Контекст
enum posix posix, sysv, windows, mmap сегменты; система; перезапуск

gp_resource_group_memory_limit


Задаёт максимальный процент системных ресурсов памяти, который может быть выделен группам ресурсов на каждом узле Segment YMatrix базы данных.

  • Примечание: Этот параметр конфигурации вступает в силу только при включённом управлении ресурсами Группами ресурсов.
Тип данных Значение по умолчанию Диапазон Контекст
вещественное число 0.7 0.1 ~ 1.0 сегменты; система; перезапуск

gp_vmem_protect_limit


Задаёт общий объём памяти (в МБ), который могут использовать все процессы 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) сегменты; система; перезапуск

gp_vmem_protect_segworker_cache_limit


Если процесс-исполнитель запроса потребляет больше памяти, чем указано в этом параметре (в МБ), процесс не будет кэшироваться для повторного использования после завершения.

  • Системы с большим числом соединений или неактивных процессов могут уменьшить это значение для высвобождения дополнительной памяти на Segment.
Тип данных Значение по умолчанию Диапазон Контекст
int 500 1 ~ (INT_MAX/2) сегменты; система; перезапуск

gp_workfile_limit_files_per_query


Задаёт максимальное количество временных файлов-переполнений (также называемых workfiles), разрешённых для одного запроса на каждом Segment.

  • Файлы-переполнения создаются, когда запросам требуется больше памяти, чем доступно. Запросы, превышающие этот лимит, завершаются.
  • Установите значение в -1, чтобы разрешить неограниченное количество файлов-переполнений.
Тип данных Значение по умолчанию Диапазон Контекст
int 100000 0 ~ INT_MAX мастер; сессия; перезагрузка

gp_workfile_limit_per_query


Задаёт максимальный объём дискового пространства (в КБ), разрешённый для временных файлов-переполнений, создаваемых одним запросом на каждом Segment.

  • Значение по умолчанию — 0, что означает отсутствие ограничения.
Тип данных Значение по умолчанию Диапазон Контекст
int 0 0 ~ INT_MAX мастер; сессия; перезагрузка

gp_workfile_limit_per_segment


Задаёт максимальный общий объём дискового пространства (в КБ), разрешённый для всех выполняющихся запросов на создание временных файлов-переполнений на каждом Segment.

  • Значение по умолчанию — 0, что означает отсутствие ограничения.
Тип данных Значение по умолчанию Диапазон Контекст
int 0 0 ~ INT_MAX сегменты; система; перезапуск

huge_pages


Управляет запросом на использование больших страниц для основной области разделяемой памяти.

  • Допустимые значения: try (по умолчанию), on и off. Если установлено значение try, сервер пытается запросить большие страницы и переходит на метод по умолчанию, если запрос не удаётся. Если установлено значение on, отказ в выделении больших страниц препятствует запуску сервера. Если установлено значение off, большие страницы не запрашиваются.
  • В настоящее время эта настройка поддерживается только на Linux и Windows. На других системах установка в on игнорируется.
  • Использование больших страниц уменьшает размер таблиц страниц и время ЦП, затрачиваемое на управление памятью, улучшая производительность.
  • На Windows большие страницы называются «заблокированными страницами в памяти». Для их использования учётная запись Windows, от имени которой запускается YMatrix, должна иметь привилегию «Lock Pages in Memory». Эту привилегию можно назначить с помощью инструмента групповой политики Windows (gpedit.msc). Чтобы запустить сервер базы данных как один процесс (а не как службу Windows) из командного окна, окно должно запускаться от имени администратора, либо необходимо отключить контроль учётных записей (UAC). При включённом UAC стандартные командные окна отменяют привилегию «Lock Pages in Memory» при запуске.
  • Примечание: Эта настройка влияет только на основную область разделяемой памяти. Операционные системы, такие как Linux, FreeBSD и Illumos, могут автоматически использовать большие («супер» или «огромные») страницы для обычной памяти без явных запросов от YMatrix. В Linux это известно как Transparent Huge Pages (THP). THP известен тем, что снижает производительность YMatrix на некоторых версиях Linux и не рекомендуется (в отличие от явного использования huge_pages).
Тип данных Значение по умолчанию Диапазон Контекст
enum try on/off/true/false/yes/no/1/0/try сегменты; система; перезапуск

maintenance_work_mem


Задаёт максимальный объём памяти (в КБ), используемый для операций обслуживания, таких как VACUUM, CREATE INDEX и ALTER TABLE ADD FOREIGN KEY.

  • Одновременно может выполняться только одна такая операция в сессии, и обычно в установке базы данных одновременно работает мало таких операций. Поэтому установка этого значения значительно выше, чем work_mem, безопасна.
  • Более высокие значения могут улучшить производительность операций VACUUM и восстановления базы данных.
  • Значение по умолчанию — 65536, то есть 64 МБ.
Тип данных Значение по умолчанию Диапазон Контекст
int 65536 1024 ~ (INT_MAX/1024) мастер; сессия; перезагрузка

max_prepared_transactions


Задаёт максимальное количество транзакций, которые могут одновременно находиться в состоянии подготовки (см. PREPARE TRANSACTION).

  • YMatrix использует подготовленные транзакции внутренне для обеспечения целостности данных между Segment.
  • Если используются подготовленные транзакции, установите max_prepared_transactions как минимум равным max_connections, чтобы каждая сессия могла иметь одну ожидающую подготовленную транзакцию. Если подготовленные транзакции не используются, установите это значение в 0.
Тип данных Значение по умолчанию Диапазон Контекст
int 50 1 ~ 262143 сегменты; система; перезапуск

max_stack_depth


Задаёт максимально безопасную глубину стека выполнения сервера (в КБ).

  • Оптимальное значение — фактический лимит размера стека, установленный ядром (заданный через ulimit -s или его аналог на платформе), минус примерно 1 МБ для безопасности. Этот запас необходим, поскольку не все серверные процедуры проверяют глубину стека — только критические, потенциально рекурсивные процедуры.
Тип данных Значение по умолчанию Диапазон Контекст
int 100 100 ~ (INT_MAX/1024) сегменты; сессия; перезагрузка; суперпользователь

mx_dump_mctx_threshold


Задаёт порог памяти. Если выделенная память превышает этот порог (в МБ), она будет выгружена.

Тип данных Значение по умолчанию Диапазон Контекст
int 1024 1 ~ (INT_MAX/2) мастер; сессия; перезагрузка

mx_dump_print_filter


Выводит только выделения памяти, превышающие значение этого параметра (в МБ).

Тип данных Значение по умолчанию Диапазон Контекст
int 1 0 ~ (INT_MAX/2) мастер; сессия; перезагрузка


shared_buffers


Задаёт объём разделяемых буферов памяти, используемых сервером YMatrix базы данных (в БЛОКАХ).

PG:

  • Это значение должно быть не менее 16 и не менее 16MB. Для лучшей производительности обычно используются значения значительно выше минимальных.
  • На выделенном сервере базы данных с 1 ГБ и более оперативной памяти разумным начальным значением для shared_buffers является 25% объёма системной памяти. Некоторые рабочие нагрузки могут извлечь выгоду из ещё более высоких значений. Для распределения обработки большого объёма новых или изменённых данных во времени более высокие значения shared_buffers часто требуют соответствующего увеличения checkpoint_segments.
  • Этот параметр можно задать только при запуске сервера. Изменения требуют перезапуска.
Тип данных Значение по умолчанию Диапазон Контекст
int 4096 16 ~ (INT_MAX/2) сегменты; система; перезапуск

shared_memory_type


Задаёт реализацию разделяемой памяти, используемую для основной области разделяемой памяти, включая разделяемые буферы YMatrix и другие общие данные.

  • Поддерживаемые варианты: mmap (анонимная разделяемая память, выделяемая через mmap), sysv (разделяемая память System V через shmget) и windows (разделяемая память Windows). Не все значения поддерживаются на всех платформах; первый поддерживаемый вариант является значением по умолчанию для платформы. Опция sysv не является значением по умолчанию ни на одной платформе и в целом не рекомендуется, поскольку часто требует нестандартных настроек ядра для разрешения выделения больших адресных пространств.
Тип данных Значение по умолчанию Диапазон Контекст
enum mmap mmap, sysv, windows сегменты; система; перезапуск

temp_buffers


Задаёт максимальный объём памяти (в БЛОКАХ), используемый для временных буферов в каждой сессии базы данных.

  • Этот параметр применяется только к буферам, локальным для сессии и используемым для временных таблиц.
  • Это значение можно изменить внутри сессии, но только до первого использования временной таблицы; последующие изменения в сессии не имеют эффекта.
  • Сессия выделяет временные буферы по мере необходимости, но не более лимита, заданного параметром temp_buffers.
Тип данных Значение по умолчанию Диапазон Контекст
int 1024 100 ~ (INT_MAX/2) мастер; сессия; перезагрузка

work_mem


Задаёт максимальный объём памяти (в КБ), который могут использовать операции запроса (например, сортировка или хеш-таблицы) до записи во временные файлы на диск.

  • Обратите внимание, что для сложных запросов несколько операций сортировки или хеширования могут выполняться параллельно. Операции, такие как ORDER BY, DISTINCT и слияние соединений, используют сортировку, а хеш-соединения, хеш-агрегаты и хеш-обработка подзапросов IN используют хеш-таблицы. Каждая выполняемая операция может использовать до указанного в этом параметре объёма памяти до переполнения во временные файлы.
  • Кроме того, несколько одновременных сессий могут выполнять такие операции, поэтому общий объём используемой памяти может быть во много раз больше значения work_mem. Это ключевой фактор при настройке этого параметра.
  • Этот параметр можно задать только при запуске сервера. Изменения требуют перезапуска.
Тип данных Значение по умолчанию Диапазон Контекст
int 32768 64 ~ (INT_MAX/1024) мастер; сессия; перезагрузка


Диск

temp_file_limit


Задаёт максимальный объём дискового пространства (в КБ), который процесс может использовать для временных файлов (например, временных файлов сортировки и хеширования или файлов, используемых для хранения курсоров).

  • Транзакция, пытающаяся превысить этот лимит, будет отменена.
  • Эта настройка ограничивает общий объём пространства, используемого всеми временными файлами для конкретного процесса YMatrix в любой момент времени. Обратите внимание, что дисковое пространство, используемое явно созданными временными таблицами, этим параметром не ограничивается.
  • Значение по умолчанию — -1, что означает отсутствие ограничения.
Тип данных Значение по умолчанию Диапазон Контекст
int -1 -1 или 0 ~ INT_MAX сегменты; сессия; перезагрузка; суперпользователь


Использование ресурсов ядра

max_files_per_process


Устанавливает максимальное количество файлов, которые каждый дочерний процесс сервера может одновременно иметь открытыми.

  • Вам не нужно беспокоиться об этой настройке, если ядро обеспечивает безопасное ограничение на процесс. Однако на некоторых платформах (особенно большинстве систем BSD) ядро позволяет отдельным процессам открывать больше файлов, чем система может поддерживать. Если вы сталкиваетесь с ошибками, такими как too many open files, уменьшите эту настройку.
Тип данных Значение по умолчанию Диапазон Контекст
int 1000 25 ~ INT_MAX сегменты; система; перезагрузка


Задержка очистки на основе стоимости

Во время выполнения команд VACUUM и ANALYZE система поддерживает внутренний счётчик, отслеживающий оценочную стоимость различных операций ввода-вывода. Когда накопленная стоимость достигает предела, заданного параметром vacuum_cost_limit, процесс, выполняющий операцию, приостанавливается на короткое время, указанное в vacuum_cost_delay. Затем счётчик сбрасывается, и процесс продолжается.

Цель этой функции — позволить администраторам снизить влияние операций ввода-вывода этих команд на параллельную активность базы данных. Во многих случаях не важно, насколько быстро завершатся команды обслуживания, такие как VACUUM и ANALYZE; важно, чтобы они не оказывали существенного влияния на способность системы выполнять другие операции с базой данных. Задержка очистки на основе стоимости предоставляет администраторам возможность обеспечить это.

Для команд VACUUM, выполненных вручную, эта функция отключена по умолчанию. Чтобы включить её, установите переменную vacuum_cost_delay в ненулевое значение.

vacuum_cost_delay


Время (в миллисекундах), на которое процесс приостанавливается при превышении лимита стоимости.

  • Значение по умолчанию — 0, что отключает задержку очистки на основе стоимости. Положительные значения включают очистку на основе стоимости.
  • При использовании очистки на основе стоимости типичные значения для vacuum_cost_delay обычно очень малы.
Тип данных Значение по умолчанию Диапазон Контекст
вещественное 0 0 ~ 100 сегменты; сессия; перезагрузка

vacuum_cost_limit


Накопленная стоимость, при достижении которой процесс очистки приостанавливается.

Тип данных Значение по умолчанию Диапазон Контекст
int 200 1 ~ 10000 сегменты; сессия; перезагрузка

vacuum_cost_page_dirty


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

Тип данных Значение по умолчанию Диапазон Контекст
int 20 0 ~ 10000 сегменты; сессия; перезагрузка

vacuum_cost_page_hit


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

Тип данных Значение по умолчанию Диапазон Контекст
int 1 0 ~ 10000 сегменты; сессия; перезагрузка

vacuum_cost_page_miss


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

Тип данных Значение по умолчанию Диапазон Контекст
int 10 0 ~ 10000 сегменты; сессия; перезагрузка


Асинхронное поведение

backend_flush_after


Когда бэкенд записывает больше этого объёма данных (в БЛОКАХ), он пытается заставить ОС сбросить эти записи на нижележащее хранилище.

  • Это ограничивает объём грязных данных в кэше страниц ядра, снижая вероятность задержек при финализации контрольной точки (при выполнении fsync) или при фоновом сбросе больших пакетов ОС. Часто это значительно снижает задержку транзакций, хотя в некоторых случаях производительность может ухудшиться (особенно при нагрузке, превышающей shared_buffers, но остающейся ниже кэша страниц ОС).
  • Эта настройка может не иметь эффекта на некоторых платформах.
  • Значение по умолчанию — 0, что отключает принудительный сброс.
Тип данных Значение по умолчанию Диапазон Контекст
int 0 0 ~ 256 сегменты; сессия; перезагрузка

effective_io_concurrency


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

  • Увеличение этого значения увеличивает количество операций ввода-вывода, которые одна сессия YMatrix пытается инициировать параллельно. Допустимый диапазон — 1 до 1000, или 0 для отключения асинхронных запросов ввода-вывода.
  • В настоящее время эта настройка влияет только на сканирования битмап-куч.
  • Для жёстких дисков хорошей отправной точкой является количество отдельных дисков в RAID 0 или RAID 1, используемых для базы данных (для RAID 5 не учитывайте диск чётности). Однако, если база данных часто обрабатывает несколько запросов от параллельных сессий, более низкое значение может быть достаточным для поддержания загрузки массива дисков. Значения выше необходимого добавляют только накладные расходы ЦП. SSD и другие виды памяти могут обрабатывать множество параллельных запросов, поэтому их оптимальное значение может составлять сотни.
  • Асинхронный ввод-вывод зависит от эффективной функции aio_write (некоторые операционные системы могут её не иметь). Установка этого параметра в любое значение, отличное от 0, вызовет ошибку, если функция отсутствует. На некоторых системах (например, Solaris) функция существует, но ничего не делает.
  • По умолчанию значение — 1 на поддерживаемых системах, иначе — 0.
  • Для таблиц в конкретном табличном пространстве это значение можно переопределить, задав одноимённый параметр для этого табличного пространства (см. ALTER TABLESPACE).
Тип данных Значение по умолчанию Диапазон Контекст
int 1 0 ~ 1000 сегменты; сессия; перезагрузка

max_parallel_maintenance_workers


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

  • В настоящее время единственной командой утилиты, поддерживающей параллельные рабочие процессы, является CREATE INDEX, и только построение индексов B-tree может быть параллелизовано.
  • Параллельные рабочие процессы берутся из пула, созданного max_worker_processes, управляемого параметром max_parallel_workers. Примечание: Запрошенное количество рабочих процессов может быть недоступно во время выполнения. В этом случае операция утилиты выполняется с меньшим числом рабочих процессов, чем планировалось.
  • Значение по умолчанию — 2. Установка этого параметра в 0 отключает параллельные рабочие процессы для команд утилит.
  • Примечание: Параллельные команды утилит не должны потреблять больше памяти, чем эквивалентные непараллельные операции. Это отличается от параллельных запросов, где ограничения ресурсов обычно применяются к каждому рабочему процессу. Параллельные команды утилит рассматривают ограничения ресурсов, такие как maintenance_work_mem, как лимит для всей команды независимо от количества используемых параллельных рабочих процессов. Однако параллельные команды утилит могут по-прежнему потреблять больше ресурсов ЦП и пропускной способности ввода-вывода.
Тип данных Значение по умолчанию Диапазон Контекст
int 2 0 ~ 1024 сегменты; сессия; перезагрузка

max_parallel_workers


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

  • При увеличении или уменьшении этого значения рассмотрите возможность корректировки max_worker_processes и max_parallel_maintenance_workers.
  • Также обратите внимание, что установка этого значения выше max_worker_processes не имеет эффекта, поскольку параллельные рабочие процессы берутся из пула, созданного max_worker_processes.
Тип данных Значение по умолчанию Диапазон Контекст
int 64 0 ~ 1024 сегменты; сессия; перезагрузка

max_parallel_workers_per_gather


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

  • Параллельные рабочие процессы берутся из пула, созданного max_worker_processes, и ограничиваются max_parallel_workers.
  • Примечание: Запрошенное количество рабочих процессов может быть недоступно во время выполнения. В этом случае план выполняется с меньшим числом рабочих процессов, что может снизить эффективность.
  • Значение по умолчанию — 2. Установка этого параметра в 0 отключает выполнение параллельных запросов.
  • Примечание: Параллельные запросы могут потреблять больше ресурсов, чем непараллельные, поскольку каждый рабочий процесс является полностью независимым процессом с системным воздействием, аналогичным дополнительной пользовательской сессии. Это следует учитывать при выборе значения и настройке других параметров ограничения ресурсов (например, work_mem). Ограничения ресурсов, такие как work_mem, применяются независимо к каждому рабочему процессу, что означает, что общее потребление ресурсов всеми процессами может быть значительно выше. Например, параллельный запрос с 4 рабочими процессами может использовать до 5 раз больше времени ЦП, памяти и пропускной способности ввода-вывода, чем непараллельный запрос.
Тип данных Значение по умолчанию Диапазон Контекст
int 2 0 ~ 1024 мастер; сессия; перезагрузка

max_worker_processes


Устанавливает максимальное количество фоновых процессов, которые система может поддерживать.

  • При запуске сервера-резервной копии этот параметр должен быть установлен на значение, равное или превышающее значение на основном сервере; иначе запросы могут не разрешаться на резервном сервере.
  • При изменении этого значения рассмотрите также корректировку max_parallel_workers и max_parallel_maintenance_workers.
Тип данных Значение по умолчанию Диапазон Контекст
int 69 1 ~ 262143 сегменты; система; перезагрузка

old_snapshot_threshold


Устанавливает минимальный возраст (в минутах), который может достигнуть снимок, прежде чем при его использовании возникнет ошибка old snapshot.

  • Мёртвые данные, старше этого порога, могут быть очищены. Это помогает предотвратить раздувание снимков, вызванное длительными снимками. Чтобы предотвратить некорректные результаты из-за удаления видимых данных, возникает ошибка, когда снимок старше этого порога используется для чтения страницы, изменённой после создания снимка.
  • Значение -1 (по умолчанию) отключает эту функцию, фактически устанавливая срок жизни снимка как бесконечный.
  • Полезные значения в продакшене варьируются от нескольких часов до дней. Допустимы небольшие значения (например, 5 или 10), так как они могут быть полезны для тестирования. Хотя допускаются значения до 86400 (60 дней), имейте в виду, что при многих рабочих нагрузках значительное раздувание или переполнение идентификаторов транзакций могут возникнуть за гораздо более короткие сроки.
  • Когда эта функция включена, освобождённое пространство в конце отношения не может быть возвращено ОС, так как оно может содержать информацию, необходимую для обнаружения условий old snapshot. Всё пространство, выделенное отношению, остаётся с ним для повторного использования, пока не будет явно освобождено (например, через VACUUM FULL).
  • Эта настройка не гарантирует ошибку во всех случаях. Например, если корректный результат может быть сгенерирован из курсора, который уже материализовал набор результатов, ошибка не возникает, даже если соответствующие строки были очищены. Некоторые таблицы (например, системные каталоги) нельзя безопасно очищать заранее, и они не подвержены влиянию этой настройки. Для таких таблиц эта настройка не уменьшает раздувание или вероятность ошибок old snapshot при сканировании.
Тип данных Значение по умолчанию Диапазон Контекст
int -1 -1 ~ 86400 сегменты; система; перезагрузка