互联网服务postgresPostgreSQL

大家对于pgsql的表膨胀一般都怎么搞?

大家对于pgsql的表膨胀一般都怎么搞

参与5

2同行回答

anikikonganikikong课题专家组数据库运维工程师中国民生银行
pg的表膨胀问题实在是太烦人了,一不注意就会顶上去下不来。full vacuum又要锁表,相信没几个系统能这么干的。那么为了避免膨胀的问题,首先需要了解这个机制。1. og的表是追加更新的。删除的数据也不是真的删除。这是PG实现MVCC机制。根子上决定了会存在膨胀的问题。2 那...显示全部

pg的表膨胀问题实在是太烦人了,一不注意就会顶上去下不来。full vacuum又要锁表,相信没几个系统能这么干的。那么为了避免膨胀的问题,首先需要了解这个机制。
1. og的表是追加更新的。删除的数据也不是真的删除。这是PG实现MVCC机制。根子上决定了会存在膨胀的问题。
2 那么老的数据应该需要被及时清理掉,这样回收空间。这种回收就是vacuum来实现。pg的自动vacuum是可以解决膨胀问题的。因此设置好自动vacuum的机制很重要。但是vacuum是要考虑mvcc的,也就是当前最老的那个活动事务号之前的数据都可以清理。这就要求我们监控好活动事务,不能留长事务。
3 对于定期清理历史数据的表,这种使用采用时间分区的表,这样drop表分区就可以把空间腾出来,这是最好的方式。
随意对策就是:
1. 设置自动vacuum
2. 监控和杀长事务
3. 利用好分区表
4。监控表的大小和膨胀率,及时发现问题。

收起
银行 · 2022-01-17
浏览885
甘草片甘草片软件开发工程师安天科技
pg 膨胀就是个灾难问题。哈,个人认为,咋处理都有点那个!!!!硬伤!我这处理的经验基本有几个点,基本都是为了避免膨胀后者避免碰撞带来的效率问题(io)!1场景    比如临时表的使用,在自己的session 里面把需要做的 u d 都做了。到最后的状态放到结果表里。2 场景, 评估一下数...显示全部

pg 膨胀就是个灾难问题。哈,个人认为,咋处理都有点那个!!!!硬伤!
我这处理的经验基本有几个点,基本都是为了避免膨胀后者避免碰撞带来的效率问题(io)!
1场景    比如临时表的使用,在自己的session 里面把需要做的 u d 都做了。到最后的状态放到结果表里。
2 场景, 评估一下数据的修改次数和概率,一个块的填充率设置就小点。尽量在一个块了折腾,减少io

3  把活数据和死数据分区管理,这样在对数据维护的时候就可以只针对有ud 操作的分区表处理,大大减少运维时间。

4 对大的表尽量设置人工回收,不要让pg自己去搞,感觉会更安心些

5 对慢的sql 监控一下,有很多时候并不是因为膨胀而引起的副作用

其实也不用过度的去担心这个。现在把磁盘弄大点(ssd更好)这应该不是多大的事在一般系统里!

收起
软件开发 · 2022-01-14
浏览819

提问者

lungta
lungta0011
运维北京某公司

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2022-01-13
  • 关注会员:3 人
  • 问题浏览:1656
  • 最近回答:2022-01-17
  • X社区推广