JBPM数据清理

接手一个JBPM3项目, MYSQL INNODB ibdata1都50GB了, 关联查询processdefinition, processintance很慢, 需要清楚一些过期的processinstance.

使用GraphSession.deleteProcessInstance删? 一两秒才能删一个, 几十万条, outage不允许.

网上一哥们使用delete from ... where processinstance in (...) 批量的删, 慢到你不信, SET FOREIGN_KEY_CHECKS=0;也不好使.

jbpm_token 70万条, jbpm_variableinstance 700万条, jbpm_bytearray, jbpm_log, jbpm_byteblock好像都是千万条的级别.

用户要求保留近期的数据不能直接drop掉.

硬着头皮用power designer导入这些jbpm_表慢慢分析这些关联.

导出数据再导入新数据库再加外键, 加外键是恐怖的了, 暂时在自己的数据上是没问题.

SQL语句写成那样都是有些原因的, 有空再扯...

==================================

产品数据库碰到variableinstance,log都很难导出,故更新

 select * from `jbpm_variableinstance` vi where vi.`PROCESSINSTANCE_` >= (select min(ID_) from tmp_processinstance)
 into outfile 'c:/jbpm_variableinstance.sql';

select * from `jbpm_log` lo where ID_>=26000000 and TO_DAYS(NOW())-TO_DAYS(lo.`DATE_`) <= 45 into outfile 'c:/jbpm_log.sql';

log的ID靠猜出来的, select ID_,DATE_ from jbpm_log, 因为ID_递增, 可以过滤减少查询结果集.

创表加外键之后

SET FOREIGN_KEY_CHECKS=0;

load data infile ........

SET FOREIGN_KEY_CHECKS=1;

猜你喜欢

转载自blog.csdn.net/zealVampire/article/details/4663950