У меня есть вариант использования для одновременной вставки 100 000 строк в минуту на другом конце, несколько потоков возьмут строки и удалят их из моей таблицы. Так что определенно это создаст много мертвых кортежей в моей таблице.
Мои конфигурации автоматического вакуума
autovacuum_max_workers = 3
autovacuum_naptime = 1min
utovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.1
autovacuum_vacuum_cost_delay = 20ms
autovacuum_vacuum_cost_limit = -1
Из pg_stat_user_tables я могу узнать, что на моей таблице работает автоочистка, но через несколько часов мой диск будет заполнен (500 ГБ), и я не смогу вставить новую строку.
со второй попытки я изменил следующую конфигурацию
autovacuum_naptime = 60min
autovacuum_vacuum_cost_delay = 0
На этот раз моя симуляция и автоматическая очистка работают хорошо, а максимальный размер диска составляет 180 ГБ.
Здесь я сомневаюсь, что если я изменю autovacuum_vacuum_cost_delay на ноль мс, как автоматически очистить пространство мертвых кортежей и повторно использовать его? почему он не работает должным образом, если я установил значение 20 мс?