目前遇到的情况是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 谢谢大佬,确实是前期设计的时候欠考虑了
|