咨询一下大家 activiti 几百万数据查询慢怎么办

2022-07-21 17:27:08 +08:00
 cannotfindobject

如题

2280 次点击
所在节点    Java
16 条回复
tomczhen
2022-07-21 17:29:33 +08:00
性价比高的方案:找篇 mysql 数据库查询执行计划分析的文章看看。
bootvue
2022-07-21 17:33:38 +08:00
硬删除 long long ago history & 关联数据
cannotfindobject
2022-07-21 17:36:24 +08:00
@tomczhen 每次查询 type 都是 all ,不知道如何保全数据和业务逻辑的情况下如何进行下一步优化
cannotfindobject
2022-07-21 17:41:01 +08:00
@bootvue 旧数据也要留着:)
wxf666
2022-07-21 17:47:00 +08:00
为何不先加 ASSIGNEE_索引试试呢?
wolfie
2022-07-21 17:54:03 +08:00
可以建索引。
根据 ASSIGNEE_ 查询的为什么不是 ACT_HI_TASKINST
JohnYehyo
2022-07-21 18:24:14 +08:00
前端页面无非展示三类数据:待办、在办、已办结
可能业务特点吧,我们的表里不会有很多的在办理的流程, 但是历史记录很多
所以 以前用 activiti 的一个笨办法:
前两种直接用的 TaskQuery 对象查
最后的办结直接查的业务表而非 activiti 的历史表
potatowish
2022-07-21 18:37:04 +08:00
加索引试试,然后查询历史记录尽可能用自己的业务表,activiti 的历史记录表隔一段时间清理一次指定时间之前的数据。
cannotfindobject
2022-07-21 18:45:45 +08:00
@wolfie 700w 建立索引在生产环境会有什么影响吗
wolfie
2022-07-21 19:29:17 +08:00
@cannotfindobject
建立索引时候卡顿 10 来秒吧,700w 不算大数据量。
可以建立个 copy 表试一下。
QBS
2022-07-22 09:31:16 +08:00
前面大佬已经说了,无非:待办、在办、已办结。我当时的处理就是将已办结的流程信息保存在自己的业务表中,我们使用的 mongodb ,因为这部分信息基本不会再发生改变了。而一般来说待办、在办这部分的流程应该相对都是比较少的。
Belmode
2022-07-22 10:26:48 +08:00
@QBS 对的,冷热分离。
alen0206
2022-07-22 11:05:23 +08:00
activiti 自带的表是可以建索引的
cannotfindobject
2022-07-22 11:24:40 +08:00
@Belmode 现在打算把已办结的数据都打到 es 里。
cannotfindobject
2022-07-22 11:25:03 +08:00
@alen0206 主要担心会不会对流程产生其他影响,比如插入效率之类的
cannotfindobject
2022-07-22 11:25:37 +08:00
@QBS 谢谢大佬,确实是前期设计的时候欠考虑了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/867814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX