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