Размер таблицы базы данных не уменьшился пропорционально

Я работаю с базой данных 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

работал на меня. У меня есть один дополнительный вопрос:
Перезапустить номера первичных ключей существующих строк после удаления большей части большой таблицы


person VJ Vélan Solutions    schedule 20.03.2013    source источник
comment
Вы упоминаете PostgreSQL 8.3. Тем не менее, вы тег 8.4? Просьба уточнить. В любом случае, я настоятельно рекомендую вам подумать об обновлении до более новой версии. В VACUUM было внесено множество улучшений.   -  person Erwin Brandstetter    schedule 20.03.2013
comment
@ErwinBrandstetter: Спасибо, Эрвин. Обновил вопрос. Исправлена ​​версия pg, которая у меня была. У меня есть к вам дополнительный вопрос. Спасибо.   -  person VJ Vélan Solutions    schedule 20.03.2013
comment
Пожалуйста, начните новый вопрос для второго вопроса. Разделяйте темы.   -  person Erwin Brandstetter    schedule 20.03.2013
comment
@ErwinBrandstetter Спасибо. Я создал новый вопрос для моего последующего вопроса. stackoverflow .com/questions/15526813/ Благодарим вас за помощь.   -  person VJ Vélan Solutions    schedule 20.03.2013


Ответы (1)


Чтобы фактически вернуть дисковое пространство ОС, запустите VACUUM FULL.

Более подробная информация содержится в этом тесном похожий недавний ответ на dba.SE.

person Erwin Brandstetter    schedule 20.03.2013