V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cannotfindobject
V2EX  ›  Java

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

  •  
  •   cannotfindobject · 2022-07-21 17:27:08 +08:00 · 2505 次点击
    这是一个创建于 850 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题

    • 目前遇到的情况是ACT_HI_ACTINST这个表里有七百万条的数据。

    • 每次根据ASSIGNEE_查询历史流程都需要很长时间

    • activiti 为这个表设计的索引字段并没有包含ASSIGNEE_

    • ID_主键还是 varchar 类型

    • 这种情况我可以给ASSIGNEE_添加索引吗?

    • 或者有什么性价比高的方案

    16 条回复    2022-07-22 11:25:37 +08:00
    tomczhen
        1
    tomczhen  
       2022-07-21 17:29:33 +08:00 via Android
    性价比高的方案:找篇 mysql 数据库查询执行计划分析的文章看看。
    bootvue
        2
    bootvue  
       2022-07-21 17:33:38 +08:00
    硬删除 long long ago history & 关联数据
    cannotfindobject
        3
    cannotfindobject  
    OP
       2022-07-21 17:36:24 +08:00
    @tomczhen 每次查询 type 都是 all ,不知道如何保全数据和业务逻辑的情况下如何进行下一步优化
    cannotfindobject
        4
    cannotfindobject  
    OP
       2022-07-21 17:41:01 +08:00
    @bootvue 旧数据也要留着:)
    wxf666
        5
    wxf666  
       2022-07-21 17:47:00 +08:00
    为何不先加 ASSIGNEE_索引试试呢?
    wolfie
        6
    wolfie  
       2022-07-21 17:54:03 +08:00
    可以建索引。
    根据 ASSIGNEE_ 查询的为什么不是 ACT_HI_TASKINST
    JohnYehyo
        7
    JohnYehyo  
       2022-07-21 18:24:14 +08:00
    前端页面无非展示三类数据:待办、在办、已办结
    可能业务特点吧,我们的表里不会有很多的在办理的流程, 但是历史记录很多
    所以 以前用 activiti 的一个笨办法:
    前两种直接用的 TaskQuery 对象查
    最后的办结直接查的业务表而非 activiti 的历史表
    potatowish
        8
    potatowish  
       2022-07-21 18:37:04 +08:00 via iPhone
    加索引试试,然后查询历史记录尽可能用自己的业务表,activiti 的历史记录表隔一段时间清理一次指定时间之前的数据。
    cannotfindobject
        9
    cannotfindobject  
    OP
       2022-07-21 18:45:45 +08:00
    @wolfie 700w 建立索引在生产环境会有什么影响吗
    wolfie
        10
    wolfie  
       2022-07-21 19:29:17 +08:00
    @cannotfindobject
    建立索引时候卡顿 10 来秒吧,700w 不算大数据量。
    可以建立个 copy 表试一下。
    QBS
        11
    QBS  
       2022-07-22 09:31:16 +08:00
    前面大佬已经说了,无非:待办、在办、已办结。我当时的处理就是将已办结的流程信息保存在自己的业务表中,我们使用的 mongodb ,因为这部分信息基本不会再发生改变了。而一般来说待办、在办这部分的流程应该相对都是比较少的。
    Belmode
        12
    Belmode  
       2022-07-22 10:26:48 +08:00
    @QBS 对的,冷热分离。
    alen0206
        13
    alen0206  
       2022-07-22 11:05:23 +08:00
    activiti 自带的表是可以建索引的
    cannotfindobject
        14
    cannotfindobject  
    OP
       2022-07-22 11:24:40 +08:00
    @Belmode 现在打算把已办结的数据都打到 es 里。
    cannotfindobject
        15
    cannotfindobject  
    OP
       2022-07-22 11:25:03 +08:00
    @alen0206 主要担心会不会对流程产生其他影响,比如插入效率之类的
    cannotfindobject
        16
    cannotfindobject  
    OP
       2022-07-22 11:25:37 +08:00
    @QBS 谢谢大佬,确实是前期设计的时候欠考虑了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2597 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:43 · PVG 18:43 · LAX 02:43 · JFK 05:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.