19.10. Автоматическая очистка #
Эти параметры управляют поведением механизма автоочистки. За дополнительными сведениями обратитесь к Подразделу 24.1.6. Заметьте, что многие из этих параметров могут быть переопределены на уровне таблиц; см. Параметры хранения.
autovacuum
(boolean
) #Управляет состоянием демона, запускающего автоочистку. По умолчанию он включён, но чтобы автоочистка работала, нужно также включить track_counts. Задать этот параметр можно только в
postgresql.conf
или в командной строке при запуске сервера. Однако автоочистку можно отключить для отдельных таблиц, изменив их параметры хранения.Заметьте, что даже если этот параметр отключён, система будет запускать процессы автоочистки, когда это необходимо для предотвращения зацикливания идентификаторов транзакций. За дополнительными сведениями обратитесь к Подразделу 24.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 миллионов транзакций. Задать этот параметр можно только при запуске сервера, но для отдельных таблиц его можно определить по-другому, изменив их параметры хранения. За дополнительными сведениями обратитесь к Подразделу 24.1.5.autovacuum_multixact_freeze_max_age
(integer
) #Задаёт максимальный возраст (в мультитранзакциях) для поля
pg_class
.relminmxid
таблицы, при достижении которого будет запущена операцияVACUUM
для предотвращения зацикливания идентификаторов мультитранзакций в этой таблице. Заметьте, что система запустит процессы автоочистки для предотвращения зацикливания, даже если для всех других целей автоочистка отключена.При очистке мультитранзакций могут также удаляться старые файлы из подкаталогов
pg_multixact/members
иpg_multixact/offsets
, поэтому значение по умолчанию сравнительно мало — 400 миллионов мультитранзакций. Этот параметр можно задать только при запуске сервера, но для отдельных таблиц его можно определить по-другому, изменив их параметры хранения. За дополнительными сведениями обратитесь к Подразделу 24.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
или в командной строке при запуске сервера. Однако его можно переопределить для отдельных таблиц, изменив их параметры хранения.