db2数据库一个大表45GB,如何快速清除其中一年前的数据(该表属于业务表,要尽可能的不影响业务)?

最好不要影响业务,如果非要影响业务,如何做到时间最小。显示全部

最好不要影响业务,如果非要影响业务,如何做到时间最小。

收起
参与132

查看其它 10 个回答libai21的回答

libai21libai21课题专家组软件架构设计师海通证券

提供两种方案供参考:
方案一:时间长,对业务影响小
对一年前的数据慢慢的删除,比如每次删除10万条;直到删除干净

方案二:时间短,步骤多,对业务有影响
1.创建一个新表
2.把要保留的数据从原表导出,然后导入到新表中;
3.停止应用,对原表改名,然后把新表改为原表;
4.将步骤2中导出数据后,新增加的数据导出,导入到新表中
5.启动应用;

证券 · 2018-01-10
  • 慢慢delete太费时间了,一亿多行的数据。 方案二中导出之前是不是就该停应用?改表名? 否则新插入的数据怎么导出?
    2018-01-11
  • 应该是导出之前停止应用,要不然后面业务新增的数据保存会出错
    2018-01-17
  • 如果只保留一年的数据,且每天的量差不多,可以考虑改成按日期做范围分区表。做DETACH美滋滋
    2018-03-01
  • 分区表之后,直接truncate不需要的分区表
    2020-06-24

回答者

libai21
软件架构设计师海通证券
擅长领域: 数据库存储服务器

libai21 最近回答过的问题

回答状态

  • 发布时间:2018-01-10
  • 关注会员:14 人
  • 回答浏览:9203
  • X社区推广