Я работаю с базой данных PostgreSQL 8.4.13.
Недавно у меня было около 86,5 миллионов записей в таблице. Почти все удалил - осталось всего 5000 записей. я побежал
reindex
а также
vacuum analyze
после удаления строк. Но я все равно вижу, что таблица занимает много места на диске:
jbossql=> SELECT pg_size_pretty(pg_total_relation_size('my_table'));
pg_size_pretty
----------------
7673 MB
Кроме того, значение индекса оставшихся строк все еще довольно велико - например, в диапазоне миллионов. Я думал, что после очистки и переиндексации индекс оставшихся строк будет начинаться с 1.
Я прочитал документацию, и стало совершенно ясно, что мое понимание переиндексации было искажено.
Но, тем не менее, я намерен уменьшить размер таблицы после операции удаления и уменьшить значения индекса, чтобы операции чтения (SELECT
) из таблицы не занимали так много времени - в настоящее время мне требуется около 40 секунд, чтобы получить только одну запись из мой стол.
Обновлять
Спасибо, Эрвин. Я исправил номер версии pg.
vacuum full
работал на меня. У меня есть один дополнительный вопрос:
Перезапустить номера первичных ключей существующих строк после удаления большей части большой таблицы
VACUUM
было внесено множество улучшений. - person Erwin Brandstetter   schedule 20.03.2013