微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql – 数据库表大小没有按比例减少

我正在使用Postgresql 8.4.13数据库.
最近我在一张桌子里有大约8650万条记录.我删除了几乎所有这些 – 只剩下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

为我工作.我在这里一个跟进问题:
Restart primary key numbers of existing rows after deleting most of a big table

要实际将磁盘空间返回到OS,请运行 VACUUM FULL.

关于related recent answer on dba.SE的更多细节.

原文地址:https://www.jb51.cc/postgresql/192169.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐