greenplum 单表磁盘空间持续高速增长,解决办法(1)

场景描述:同样的系统部署在3个环境中,(问题表P) 正常的增长范围应该是是每天1M,某一天线上问题说是系统宕机了,然后看了一下系统状态日志,磁盘空间满了。

处理流程:

  1. 日志本来是7天循环的,先手动删除了一下。
  2. 有一张数据备份表,和业务流程日志表,这两个是可以删除的,然后进行了truncate。

释放了10几个G的空间,然后启动服务,开始排查问题。

  • select pg_size_pretty(pg_relation_size('table_name'));查看了表物理空间大小,发现有一张P表达到了300G,然后第二天观察了一下,发现一天增长了近5G的数据。这个P表的数据是从其他表中计算插入的,对比三个环境的基础数据O表,数据量大小和增量相差不大,另外两张P表每天也就增量1M。
  • 初步怀疑是因为这个表有删除动作导致的物理空间没有释放(GP 删除和修改数据,都会占用双倍的物理空间,不会进行释放)。当时连 count 命令都不能执行完成,扫描代价太高了。
  • 当时漏掉了一个操作,看一下数据倾斜好了,本身分布键是比较均匀的,当时试下segment问题好了,现在没办法复现了。
  • 最后决定方案就是,停机执行真空操作,但是要想释放空间就要vacuum full,这个指令也是极其耗时。服务也不能挺的太久,后来决定基于 mysql 大表变更方案 进行改动。       
  • 本地 I5 4核,13G 真空耗费57分钟。(生产8核 320G ,10小时以内,具体时间没有统计到,应该很短)动作本身不耗费物理空间所以不用考虑剩余磁盘空间问题,内存也没有波动。 

 

  1. 停机。
  2. 修改表名
  3. 建立新表,创建新表索引
  4. 执行真空
  5. 预期时间内如果执行完成,直接删除新表,将老表名称变更回去。
  6. 如果预期时间内不能完成,则正常启动项目,等真空完成,增量数据回老表。

结果:

  1. 预期时间内真空完成,P表由320G →59M 
  2. 真空前每天增量1G+,现在每天增量1M
  3. count操作可以执行
  4. 直接删除新表,恢复老表  正常启动项目。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GreenPlum6官方文档中文翻译,如下为节选: 有关配置,管理和监控Greenplum数据库安装以及管理,监控和使用数 据库的信息。该指南还包含有关Greenplum数据库架构和概念(例如 并行处理)的信息。 Greenplum数据库概念 这一节给出了Greenplum数据库组件和特性的概述,例如高可用 性、并行数据装载特性以及管理工具。 管理一个Greenplum系统 这一节描述了一个Greenplum数据库系统管理员所执行的基本系统 管理任务。 管理Greenplum数据库访问 保护Greenplum数据库,包括通过网络配置、数据库用户身份验 证、加密来保护对数据库的访问。 定义数据库对象 这一节包括Greenplum数据库中的数据定义语言(DDL)以及如何 创建和管理数据库对象。 分布与倾斜 Greenplum数据库依赖于跨节点的均匀数据分布。 插入, 更新, 和删除数据 这一节提供了Greenplum数据库中有关操纵数据和并发访问的信 息。 查询数据 本主题提供在Greenplum数据库中使用SQL的信息。 使用外部数据 外部表和外表都可以访问存储在Greenplum数据库之外的数据源中 的数据,就好像数据存储在常规数据库表中一样。您可以从外部表 和外表读取和写入数据。 装载和卸载数据 这一节中的主题描述了Greenplum数据库中将数据装载进来和写出 去的方法,以及如何格式化数据文件。 性能管理 这一节的内容是Greenplum数据库的性能管理,其中包含了如何监 控,以及如何通过配置工作量来进行资源调用的优先级管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值