зеркало из
				https://github.com/iharh/notes.git
				synced 2025-11-04 07:36:08 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			46 строки
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			46 строки
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Думаю, вам не стоит напоминать важность процесса AUTOVACUUM для функционирования PostgreSQL? 😉 По этому решили сделать небольшую шпаргалку по его параметрам, чтобы можно было быстро вспомнить какой параметр за что отвечает.
 | 
						|
 | 
						|
📌 autovacuum_max_workers
 | 
						|
 | 
						|
Кол-во процессов AUTOVACUUM (не считая основного процесса). Значение по умолчанию 3. Это значит, что 3 процесса autovacuum будут работать над очисткой таблиц одновременно. Изменение параметра требует перезапуска службы PostgreSQL. При первом приближении можно поставить кол-во процессов AUTOVACUUM равным половине кол-ва ядер процессора.
 | 
						|
 | 
						|
📌 autovacuum_vacuum_cost_limit
 | 
						|
 | 
						|
Предыдущий параметр не имеет смысла увеличивать без увеличения параметра autovacuum_vacuum_cost_limit. Об этом мы уже писали (https://t.me/pg_guru/195). Напомню, этот параметр отвечает за стоимость работы процесса AUTOVACUUM в условных попугаях. Если мы увеличим кол-во процессов не увеличивая стоимости пропорционально, то наши процессы будут быстро вырабатывать ее и засыпать, что не приведет к лучшей работе AUTOVACUUM.
 | 
						|
 | 
						|
📌 autovacuum_vacuum_cost_delay
 | 
						|
 | 
						|
Таймаут работы процесса AUTOVACUUM после того как его процессы выработали свою стоимость (получили зарплату 😁). Нужен для того, чтобы система могла "продышаться", а не быть постоянно занятой очисткой таблиц. Если задавать значение этого параметра без единиц измерения, то оно считается заданным в миллисекундах. Значение по умолчанию 2 миллисекунды.
 | 
						|
 | 
						|
📌 autovacuum_naptime
 | 
						|
 | 
						|
Задает время проверки демоном автоочистки на предмет надобности запуска AUTOVACUUM для таблиц базы. Если для значения не задана единица измерения, то оно считается заданным в секундах. Значение по умолчанию 1 минута. Для применения нового значения требуется перезапуск службы PostgreSQL.
 | 
						|
 | 
						|
📌 autovacuum_vacuum_threshold
 | 
						|
 | 
						|
Кол-во измененных или удаленных строк, при котором срабатывает AUTOVACUUM. Параметр может быть установлен как глобально в файле postgresql.conf, так и индивидуально для отдельно взятой таблицы. Значение по умолчанию 50.
 | 
						|
 | 
						|
📌 autovacuum_vacuum_scale_factor
 | 
						|
 | 
						|
Это процент от общего кол-ва строк таблицы, который будет добавляться к параметру autovacuum_vacuum_threshold. По умолчанию 0.2 (20%). Таким образом получается, что пороговое значение кол-ва строк, при котором сработает AUTOVACUUM на таблицу рассчитывается по формуле:
 | 
						|
 | 
						|
vacuum_threshold = autovacuum_vacuum_threshold + autovacuum_vacuum_scale_factor * общее_кол-во_строк_таблицы
 | 
						|
 | 
						|
Если вам по какой-то причине нужно чтобы AUTOVACUUM сработал на точном кол-ве строк таблицы, вы можете поставить значение параметра autovacuum_vacuum_scale_factor равным нулю и выставить кол-во строк в параметре  autovacuum_vacuum_threshold.
 | 
						|
 | 
						|
📌 autovacuum_vacuum_insert_threshold
 | 
						|
 | 
						|
Это кол-во вставленных (INSERT) строк, при котором сработает AUTOVACUUM на таблице. Этот параметр появился с версии PostgreSQL 13. Значение по умолчанию 1 000 строк. Если поставить -1, то VACUUM не будет срабатывать при вставке строк. Этот параметр можно установить глобально или индивидуально для конкретной таблицы.
 | 
						|
 | 
						|
📌 autovacuum_vacuum_insert_scale_factor
 | 
						|
 | 
						|
Тоже самое, что и autovacuum_vacuum_scale_factor, но для операций вставки (INSERT). Значение по умолчанию - 0.2 (20%).
 | 
						|
 | 
						|
📌 autovacuum_analyze_scale_factor и autovacuum_analyze_scale_factor
 | 
						|
 | 
						|
Здесь смысл такой же как у предыдущих параметров, только для операции ANALYZE.
 | 
						|
 | 
						|
Это основные параметры ры процесса AUTOVACUUM, которые позволят вам повлиять на его поведение, сделать его работу более агрессивной, или наоборот уменьшить влияние AUTOVACUUM на производительность системы. Настройка этих параметров требует анализа таблиц вашей базы данных и производительности PostgreSQL.
 | 
						|
 | 
						|
⚠️ За эффективной работой процесса AUTOVACUUM очень важно следить, чтобы в конечном счете не нарваться на Transaction ID Wraparound, о котором мы уже писали. (https://t.me/pg_guru/265)
 |