写点什么

笔记 20240524

作者:Geek_d01095
  • 2024-10-25
    辽宁
  • 本文字数:710 字

    阅读完需:约 2 分钟

最近在一直在纠结处理 canumda 生产环境数据库表归档的事情,今天终于把这件事了了,决定记录一下历程。



起因是 canumda 生产环境运行一年多后历史表的数据膨胀非常厉害,尤其是 act_hi_detail 表已经达到了 130G+,act_hi_detail 表用于存储历史详情信息,包括历史变量的详细数据。这些数据主要用于审计、历史追溯和报告目的,并不直接影响到系统当前的运行时行为或活动的工作流实例。虽然 act_hi_detail 表的大小对于 camunda 性能影响不大,但是对于数据库存储压力和成本却比较大,所以 DBA 一直在催促将部分历史数据归档至 OBS 然后删除这部分数据减轻数据库存储压力。


上述 act_hi_detail 表作用来自通义千问,camunda 版本 7.13.0


  • 第一阶段:计划写一个定时程序每天进行数据删除保留最近一年的数据,详细设计后发现不可行因为数据库表需要 DBA 进行归档后删除,而且 springboot+camunda 提供的 Api 层不能直接操作 DAO 层,需要自己写 DAO 层操作。

  • 第二阶段:DBA 给出了使用存储过程来循环删除数据的方案,存储过程删除某个时间段的数据,但有数 act_hi_detail 表数据实在太多(5000w+),执行数据删除过程可能导致事务阻塞。

  • 第三阶段:DBA 给出了 rename 替换表的方案,简单说就是创建一个和 act_hi_detail 一样的表 act_hi_detail_empty,然后将 act_hi_detail 表重命名为 act_hi_detail_20240524act_hi_detail_empty 重命名为 act_hi_detail,达到表替换的过程。经过在测试环境验证两遍后,最终在生产环境执行表替换。剩下的就交给 DBA 归档数据再删除旧表就行了。

create table act_hi_detail_empty like act_hi_detail;# 在一个语句执行两个表重命名,保证原子性操作rename table act_hi_detail to act_hi_detail_20240524,act_hi_detail_empty to act_hi_detail;
复制代码


发布于: 刚刚阅读数: 4
用户头像

Geek_d01095

关注

还未添加个人签名 2024-03-15 加入

还未添加个人简介

评论

发布
暂无评论
笔记 20240524_camunda_Geek_d01095_InfoQ写作社区