В PostgreSQL 15 есть большая не секционированная таблица (~2.4 ТБ), для которой VACUUM перестал завершаться за приемлемое время и уже 4 сутки висит в фазе vacuuming indexes.
pg_stat_progress_vacuum почти всегда показывает фазу vacuuming indexes, heap_blks_scanned и heap_blks_vacuumed растут крайне медленно.
pid | 659632
datid | 16476
relid | 54995
phase | vacuuming indexes
heap_blks_total | 1172082308
heap_blks_scanned | 695643348
heap_blks_vacuumed | 692970226
index_vacuum_count | 61
max_dead_tuples | 178956969
num_dead_tuples | 178956698
Что пробовал: прерывал долгий VACUUM, запускал VACUUM (INDEX_CLEANUP OFF) — завершился за ~5 часов, затем перестроил индексы (PK ~690 ГБ и составной на 2 поля (int, timestamp) ~800 ГБ). Ситуация не изменилась.
vacuum_cost_delay = 0
maintenance_work_mem = 16GB (пробовал на уровне сессии, 50GB - эффекта не дало)
какие еще "ручки" можно покрутить?
Как корректно очистить таблицу вместе с индексами и понять, почему затык именно на этой таблице? Раньше VACUUM укладывался в 6–8 часов.