20.10. Автоматическая очистка
Эти параметры управляют поведением механизма автоочистки. За дополнительными сведениями обратитесь к Подразделу 25.1.6. Заметьте, что многие из этих параметров могут быть переопределены на уровне таблиц; см. Параметры хранения.
- autovacuum(- boolean)
- Управляет состоянием демона, запускающего автоочистку. По умолчанию он включён, но чтобы автоочистка работала, нужно также включить track_counts. Задать этот параметр можно только в - postgresql.confили в командной строке при запуске сервера. Однако автоочистку можно отключить для отдельных таблиц, изменив их параметры хранения.- Заметьте, что даже если этот параметр отключён, система будет запускать процессы автоочистки, когда это необходимо для предотвращения зацикливания идентификаторов транзакций. За дополнительными сведениями обратитесь к Подразделу 25.1.5. 
- autovacuum_max_workers(- integer)
- Задаёт максимальное число процессов автоочистки (не считая процесс, запускающий автоочистку), которые могут выполняться одновременно. По умолчанию это число равно трём. Задать этот параметр можно только при запуске сервера. 
- autovacuum_naptime(- integer)
- Задаёт минимальную задержку между двумя запусками автоочистки для отдельной базы данных. Демон автоочистки проверяет базу данных через заданный интервал времени и выдаёт команды - VACUUMи- ANALYZE, когда это требуется для таблиц этой базы. Если это значение задаётся без единиц измерения, оно считается заданным в секундах. По умолчанию задержка равна одной минуте (- 1min). Этот параметр можно задать только в- postgresql.confили в командной строке при запуске сервера.
- autovacuum_vacuum_threshold(- integer)
- Задаёт минимальное число изменённых или удалённых кортежей, при котором будет выполняться - VACUUMдля отдельно взятой таблицы. Значение по умолчанию — 50 кортежей. Задать этот параметр можно только в- postgresql.confили в командной строке при запуске сервера. Однако данное значение можно переопределить для избранных таблиц, изменив их параметры хранения.
- autovacuum_vacuum_insert_threshold(- integer)
- Задаёт число добавленных кортежей, при достижении которого будет выполняться - VACUUMдля отдельно взятой таблицы. Значение по умолчанию — 1000 кортежей. При значении -1 процедура автоочистки не будет производить операции- VACUUMс таблицами в зависимости от числа добавленных строк. Задать этот параметр можно только в- 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_vacuum_insert_scale_factor(- floating point)
- Задаёт процент от размера таблицы, который будет добавляться к - autovacuum_vacuum_insert_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)
- Задаёт максимальный возраст (в транзакциях) для поля - pg_class.- relfrozenxidнекоторой таблицы, при достижении которого будет запущена операция- VACUUMдля предотвращения зацикливания идентификаторов транзакций в этой таблице. Заметьте, что система запустит процессы автоочистки для предотвращения зацикливания, даже если для всех других целей автоочистка отключена.- При очистке могут также удаляться старые файлы из подкаталога - pg_xact, поэтому значение по умолчанию сравнительно мало — 200 миллионов транзакций. Задать этот параметр можно только при запуске сервера, но для отдельных таблиц его можно определить по-другому, изменив их параметры хранения. За дополнительными сведениями обратитесь к Подразделу 25.1.5.
- autovacuum_multixact_freeze_max_age(- integer)
- Задаёт максимальный возраст (в мультитранзакциях) для поля - pg_class.- relminmxidтаблицы, при достижении которого будет запущена операция- VACUUMдля предотвращения зацикливания идентификаторов мультитранзакций в этой таблице. Заметьте, что система запустит процессы автоочистки для предотвращения зацикливания, даже если для всех других целей автоочистка отключена.- При очистке мультитранзакций могут также удаляться старые файлы из подкаталогов - pg_multixact/membersи- pg_multixact/offsets, поэтому значение по умолчанию сравнительно мало — 400 миллионов мультитранзакций. Этот параметр можно задать только при запуске сервера, но для отдельных таблиц его можно определить по-другому, изменив их параметры хранения. За дополнительными сведениями обратитесь к Подразделу 25.1.5.1.
- autovacuum_vacuum_cost_delay(- floating point)
- Задаёт задержку при превышении предела стоимости, которая будет применяться при автоматических операциях - VACUUM. Если это значение задаётся без единиц измерения, оно считается заданным в миллисекундах. При значении -1 применяется обычная задержка vacuum_cost_delay. Значение по умолчанию — 2 миллисекунды. Задать этот параметр можно только в- postgresql.confили в командной строке при запуске сервера. Однако его можно переопределить для отдельных таблиц, изменив их параметры хранения.
- autovacuum_vacuum_cost_limit(- integer)
- Задаёт предел стоимости, который будет учитываться при автоматических операциях - VACUUM. При значении -1 (по умолчанию) применяется обычное значение vacuum_cost_limit. Заметьте, что это значение распределяется пропорционально среди всех работающих процессов автоочистки, если их больше одного, так что сумма ограничений всех процессов никогда не превосходит данный предел. Задать этот параметр можно только в- postgresql.confили в командной строке при запуске сервера. Однако его можно переопределить для отдельных таблиц, изменив их параметры хранения.