码迷,mamicode.com
首页 > 其他好文 > 详细

Postgres清理大表

时间:2020-04-26 23:51:44      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:live   历史   需要   stat   wait   索引   回收   查看   rename   

  产品上线就没有规划表的数据归档、比如落成文件、保存到历史计划,所以清理大表的部分数据是最kuB事情。
  
限制的条件

\d+ 查看表的大小,15G左右。
上线配置放开了归档日志。(删除部分数据的时候,归档有可能撑爆你的文件系统)、
实时有交易往这个表里写数据,交易一分钟就超时

首先删除数据,

  • 生产保留30天的数据,一天一天删、一年、60天以前、最后时间上算30天最快。
  • 因为有数据一直在往里边写数据。而回收空间耗时问题,耗时长会一直insert wait。
      
    做了几种方案的测试。
      
    1)最简单直接的 备份 删除 回收
      \copy 数据出来
      delete 按条件删除数据
      vacuum full 表
      
    2)rename表,回导30天数据到新表
      alter table rename 旧表 新表名
      create table 旧表名
      create index 重建索引
      \copy from 回导新表名表30天数据
      

最后选择了第一种方案:凌晨三点多操作,交易最少,影响最小。
另外清理方法,提供了两个工具,pg_repack pgcompacttable
https://www.timbotetsu.com/blog/postgresql-bloatbusters/

select * from pg_stat_user_tables where relname =‘t3‘ 可以统计是否需要做操作
n_dead_tup未回收的空间
n_live_tup当前表的数据量

技术图片
  
技术图片
即触发 分析和清理时 表的数据可以维持一个动态平衡。
https://blog.csdn.net/wzyzzu/article/details/50426692
https://my.oschina.net/lcc1990/blog/1934262
这个是创建测试数据的链接,用了一个比较投机的方法,通过物理id移动数据到数据开头。
技术图片
技术图片

Postgres清理大表

标签:live   历史   需要   stat   wait   索引   回收   查看   rename   

原文地址:https://blog.51cto.com/aklaus/2490588

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!