Комментарии 9
10 Гб освобожденного пространства звучит очень неплохо, но сколько это будет в процентах от полного размера базы?
Хорошо, когда у базы есть функционал для таких действий. А то один раз из-за криво удаленной таблицы заблокировалась вся область на диске, которую она использовала, и единственное, как можно было это исправить, был слив и перезалив всей базы.
По поводу "мы сбросили статистику таблицы и немного подождали" - иногда таким образом можно удалить нужные индексы, которые используются для отчетов, которые запускаются раз в месяц или еще реже.
У нас однажды так сломался отчет - вместо минут начал считаться десятки часов. И естественно - "никто ничего не делал". Потратили несколько дней, чтобы починить и только потом выяснилось, что "все таки делали, но уже месяц назад, а это уже как-бы не считается".
Вам повезло. У меня была ситуация, когда отчёт запускался раз в год, и "тестовое отключение" хоста, на который этот отчёт был завязан произошло буквально сразу после подготовки данного отчёта, ну а через полгода отключенный хост был удалён... а ещё через полгода появился тикет "ошибка построения отчёта по амортизации ОС" - было достаточно неприятно...
Чтобы избежать блокировки, можно перестроить индекс с параметром CONCURRENTLY :
Как раз на днях зарелизили версию с исправлением бага, приводящего к скрытому повреждению индексов при таком перестроении :)
The PostgreSQL Global Development Group has released PostgreSQL 14.4 to fix an issue that could cause silent data corruption when using the
CREATE INDEX CONCURRENTLY
orREINDEX CONCURRENTLY
commands.
В целом сборка нескольких статей из хабра про использование частичных индексов, вакуума, у даление лишних индексов, переиндексация при блоате.
Неожиданная находка, которая освобождает 20 GB неиспользованного индексного пространства