activity数据表清理

文章介绍了如何通过添加create_time字段并更新相关表格,然后依据时间戳按年份删除不再需要的历史数据。提供的SQL语句用于在Activity数据库中同步创建时间并删除特定年份的数据,涉及表包括act_ge_bytearray,act_hi_identitylink,act_ru_execution等。
摘要由CSDN通过智能技术生成
  • activity使用长了会累积很多的流程数据,历史表数据就会变得很多,认真看了数据说明后发现使用sql语句就能直接清理掉历史数据。
  • 其原理就是在要删除的表中新增一个create_time字段,然后通过PROC_INST_ID_或者TASK_ID_来同步出对应的时间,最后再来按年份删除,对应的sql语句请参考。
-- 同步日期,没有create_time的要新增字段
UPDATE act_ge_bytearray as a left join `act_hi_varinst` as b on a.ID_=b.BYTEARRAY_ID_ set a.create_time=b.CREATE_TIME_ where !ISNULL(b.BYTEARRAY_ID_);

UPDATE `act_hi_identitylink` as a left join ( SELECT START_TIME_, PROC_INST_ID_ FROM act_hi_actinst GROUP BY PROC_INST_ID_ ) as b on a.PROC_INST_ID_=b.PROC_INST_ID_  set a.create_time=b.START_TIME_ where ISNULL(a.create_time) and !ISNULL(a.PROC_INST_ID_);

UPDATE `act_hi_identitylink` as a left join ( SELECT START_TIME_, TASK_ID_ FROM act_hi_actinst GROUP BY TASK_ID_ ) as b on a.TASK_ID_=b.TASK_ID_  set a.create_time=b.START_TIME_ where ISNULL(a.create_time) and !ISNULL(a.TASK_ID_);


update act_ru_execution AS a Left JOIN act_ru_task AS b ON a.PROC_INST_ID_ = b.PROC_INST_ID_  set a.create_time=b.CREATE_TIME_ where isnull(a.create_time);

update act_ru_variable AS a Left JOIN act_ru_task AS b ON a.PROC_INST_ID_ = b.PROC_INST_ID_  set a.create_time=b.CREATE_TIME_ where isnull(a.create_time);

UPDATE act_ge_bytearray as a left join `act_ru_variable` as b on a.ID_=b.BYTEARRAY_ID_ set a.create_time=b.create_time where !ISNULL(b.BYTEARRAY_ID_);

UPDATE act_ru_identitylink AS a LEFT JOIN act_ru_task AS b ON a.TASK_ID_ = b.ID_ SET a.create_time = b.CREATE_TIME_ WHERE !isnull( a.TASK_ID_ );

UPDATE act_ru_identitylink AS a LEFT JOIN (SELECT CREATE_TIME_,PROC_INST_ID_ from act_ru_task group by PROC_INST_ID_) AS b ON a.PROC_INST_ID_ = b.PROC_INST_ID_ SET a.create_time = b.CREATE_TIME_ WHERE ISNULL( a.create_time) and !ISNULL(a.PROC_INST_ID_);


-- 按次序删除,有外键关联
DELETE FROM act_ru_variable where YEAR(create_time)=2021;
DELETE FROM act_ge_bytearray where YEAR(create_time)=2021;
DELETE FROM act_hi_actinst where YEAR(START_TIME_)=2021;
DELETE FROM act_hi_comment where YEAR(TIME_)=2021;
DELETE FROM act_hi_identitylink where YEAR(create_time)=2021;
DELETE FROM act_hi_procinst where YEAR(START_TIME_)=2021;
DELETE FROM act_hi_taskinst where YEAR(START_TIME_)=2021;
DELETE FROM act_hi_varinst where YEAR(CREATE_TIME_)=2021;

DELETE FROM act_ru_identitylink where YEAR(create_time)=2021;
DELETE FROM act_ru_task where YEAR(CREATE_TIME_)=2021;
DELETE FROM act_ru_execution where YEAR(create_time)=2021;
Activity的工作流中,手动清理缓存主要涉及到调用DiskLruCache的相关方法。首先,缓存数据会存储在手机的特定位置,具体来说是存储在SD卡上。关于缓存的位置,可以通过调用DiskLruCache的directory()方法来获取。当需要手动清理缓存时,我们可以使用DiskLruCache的remove()方法来移除某个指定的缓存。这个方法需要传入一个key,代要移除的缓存对应的键值。只有当你确定某个key对应的缓存内容已经过期,需要从网络获取最新数据的时候,才应该调用remove()方法来移除缓存。此外,在Activity的工作流中,如果需要在Activity的onPause()方法中清理缓存,可以调用DiskLruCache的flush()方法,将内存中的操作记录同步到日志文件中。这个方法非常重要,因为DiskLruCache的正常工作依赖于journal文件的内容。但是并不是每次写入缓存都需要调用flush()方法,频繁调用只会增加同步journal文件的时间。比较标准的做法是在Activity的onPause()方法中调用一次flush()方法就可以了。通过这些方法和步骤,我们可以在Activity的工作流中手动清理缓存。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Android DiskLruCache完全解析,硬盘缓存的最佳方案](https://blog.csdn.net/sinyu890807/article/details/28863651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨阳明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值