首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每天大容量更新后Postgresql 9数据库大小膨胀

每天大容量更新后Postgresql 9数据库大小膨胀
EN

Server Fault用户
提问于 2011-06-09 02:04:15
回答 1查看 3.4K关注 0票数 2

我有一个Postgres数据库,每天导入/更新大约4GB的数据。(通常约有1500万至2000万行。)我正在使用大容量插入从平面文件转储导入数据。我也有一个“插入重复的键,更新”风格的触发器,它将简单地更新一个行,如果id已经存在。导入数据本身增长不大(就文件大小而言),主要是通过插入少量新记录来更新记录。而且,每次导入之后,我都要运行VACUUM ANALYZE

今天,我注意到数据库的大小膨胀到了大约15 to。在做了一些谷歌搜索之后,我决定尝试一个VACUUM FULL和一个REINDEX。数据库的大小大幅度下降(约50%)。我读到这可能与max_fsm_pages设置有关,但它似乎是从Postgres8.4中删除的,所以我不知道这里发生了什么。在postgres的日志中没有我能看到的特别感兴趣的东西。

下面是这个过程的记录:http://pastie.org/private/jt7mxajyyxuzvodch9goq

所有的表都在大幅缩小,但我认为有趣的是,在真空和重新索引之前,最大的表是一个3.7GB的索引(甚至大于2.8GB的最大内容表),然后缩小到629 MB。

这是正常还是这里出了什么问题?我试图降低磁盘上文件的大小,因为这是在一个相当小的Linode VM上运行的。

UPDATE:使用pgAdmin,以下是统计信息选项卡的几个截图:

  • 数据库统计:http://cl.ly/1v1t2L0n2m4220001F2v
  • 所有表统计数据:http://cl.ly/273B3F242O2y2Z3C3c2L
  • app_prices表统计数据:http://cl.ly/1P3Y142P2d2P3v3s0p11

所以,从上一张截图来看,造成问题的绝对是索引膨胀。表大小为3.0GB,而索引大小为4.4GB。例如,app_prices表是行数最多的表(约3 500万行),只有5列和3个索引。这看起来还正常吗?

EN

回答 1

Server Fault用户

发布于 2011-06-09 03:45:08

由于Postgresql实现MVCC的方式,这可能是正常的。

编辑:http://www.postgresql.org/docs/9.0/static/routine-vacuuming.html很好地解释了正在发生的事情以及如何处理它。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/278542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档