19.10. Автоматическая очистка
Эти параметры управляют поведением механизма автоочистки. За дополнительными сведениями обратитесь к Подразделу 24.1.6. Заметьте, что многие из этих параметров могут быть переопределены на уровне таблиц; см. Параметры хранения.
- autovacuum(- boolean)
- Управляет состоянием демона, запускающего автоочистку. По умолчанию он включён, но чтобы автоочистка работала, нужно также включить track_counts. Задать этот параметр можно только в - postgresql.confили в командной строке при запуске сервера. Однако автоочистку можно отключить для отдельных таблиц, изменив их параметры хранения.- Заметьте, что даже если этот параметр отключён, система будет запускать процессы автоочистки, когда потребуется сжать - pg_xactи- pg_multixact. За дополнительными сведениями обратитесь к Подразделу 24.1.5.
- log_autovacuum_min_duration(- integer)
- Задаёт время выполнения действия автоочистки (в миллисекундах), при превышении которого информация об этом действии записывается в журнал. При нулевом значении в журнале фиксируются все действия автоочистки. Значение -1 (по умолчанию) отключает журналирование действий автоочистки. Например, если задать значение - 250ms, в журнале будут фиксироваться все операции автоматической очистки и анализа, выполняемые дольше 250 мс. Кроме того, когда этот параметр имеет любое значение, отличное от- -1, в журнал будет записываться сообщение в случае пропуска действия автоочистки из-за конфликтующей блокировки или параллельного удаления отношения. Таким образом, включение этого параметра позволяет отслеживать активность автоочистки. Задать этот параметр можно только в- postgresql.confили в командной строке при запуске сервера. Однако его можно переопределить для отдельных таблиц, изменив их параметры хранения.
- autovacuum_max_workers(- integer)
- Задаёт максимальное число процессов автоочистки (не считая процесс, запускающий автоочистку), которые могут выполняться одновременно. По умолчанию это число равно трём. Задать этот параметр можно только при запуске сервера. 
- autovacuum_naptime(- integer)
- Задаёт минимальную задержку между двумя запусками автоочистки для отдельной базы данных. Демон автоочистки проверяет базу данных через заданный интервал времени и выдаёт команды - VACUUMи- ANALYZE, когда это требуется для таблиц этой базы. Задержка задаётся в секундах и по умолчанию равна одной минуте (- 1min). Этот параметр можно задать только в- postgresql.confили в командной строке при запуске сервера.
- autovacuum_vacuum_threshold(- integer)
- Задаёт минимальное число изменённых или удалённых кортежей, при котором будет выполняться - VACUUMдля отдельно взятой таблицы. Значение по умолчанию — 50 кортежей. Задать этот параметр можно только в- postgresql.confили в командной строке при запуске сервера. Однако данное значение можно переопределить для избранных таблиц, изменив их параметры хранения.
- autovacuum_analyze_threshold(- integer)
- Задаёт минимальное число добавленных, изменённых или удалённых кортежей, при котором будет выполняться - ANALYZEдля отдельно взятой таблицы. Значение по умолчанию — 50 кортежей. Этот параметр можно задать только в- postgresql.confили в командной строке при запуске сервера. Однако данное значение можно переопределить для избранных таблиц, изменив их параметры хранения.
- autovacuum_vacuum_scale_factor(- floating point)
- Задаёт процент от размера таблицы, который будет добавляться к - autovacuum_vacuum_thresholdпри выборе порога срабатывания команды- VACUUM. Значение по умолчанию — 0.2 (20% от размера таблицы). Задать этот параметр можно только в- postgresql.confили в командной строке при запуске сервера. Однако данное значение можно переопределить для избранных таблиц, изменив их параметры хранения.
- autovacuum_analyze_scale_factor(- floating point)
- Задаёт процент от размера таблицы, который будет добавляться к - autovacuum_analyze_thresholdпри выборе порога срабатывания команды- ANALYZE. Значение по умолчанию — 0.1 (10% от размера таблицы). Задать этот параметр можно только в- postgresql.confили в командной строке при запуске сервера. Однако данное значение можно переопределить для избранных таблиц, изменив их параметры хранения.
- autovacuum_freeze_max_age(- integer 64)
- Задаёт максимальный возраст (в транзакциях) для поля - pg_class.- relfrozenxidнекоторой таблицы, при достижении которого будет запущена операция- VACUUMдля сжатия- pg_xact. Заметьте, что система запустит процессы автоочистки для этого, даже если для всех других целей автоочистка отключена.- При очистке могут также удаляться старые файлы из подкаталога - pg_xact. Задать этот параметр можно только при запуске сервера, но для отдельных таблиц его можно определить по-другому, изменив их параметры хранения. За дополнительными сведениями обратитесь к Подразделу 24.1.5.
- autovacuum_multixact_freeze_max_age(- integer 64)
- Задаёт максимальный возраст (в мультитранзакциях) для поля - pg_class.- relminmxidнекоторой таблицы, при достижении которого будет запущена операция- VACUUMдля сжатия- pg_multixact. Заметьте, что система запустит процессы автоочистки для этого, даже если для всех других целей автоочистка отключена.- Задать этот параметр можно только при запуске сервера, но для отдельных таблиц его можно определить по-другому, изменив их параметры хранения. За дополнительными сведениями обратитесь к Подразделу 24.1.5.1. 
- autovacuum_vacuum_cost_delay(- integer)
- Задаёт задержку при превышении предела стоимости, которая будет применяться при автоматических операциях - VACUUM. При значении -1 применяется обычная задержка vacuum_cost_delay. Значение по умолчанию — 20 миллисекунд. Задать этот параметр можно только в- postgresql.confили в командной строке при запуске сервера. Однако его можно переопределить для отдельных таблиц, изменив их параметры хранения.
- autovacuum_vacuum_cost_limit(- integer)
- Задаёт предел стоимости, который будет учитываться при автоматических операциях - VACUUM. При значении -1 (по умолчанию) применяется обычное значение vacuum_cost_limit. Заметьте, что это значение распределяется пропорционально среди всех работающих процессов автоочистки, если их больше одного, так что сумма ограничений всех процессов никогда не превосходит данный предел. Задать этот параметр можно только в- postgresql.confили в командной строке при запуске сервера. Однако его можно переопределить для отдельных таблиц, изменив их параметры хранения.