解决方案 »

  1.   

    数据库表设计没啥问题。
    子任务结束时需要判断是否所有子任务都已完成,都完成了才更新主表。
    你这个业务压力多大啊,没啥复杂操作数据库怎么会顶不住。
    你怎么得出数据库压力大的结论的。
    JTA出错不一定是压力大造成的,需要仔细分析出错原因。
      

  2.   

    主表需要三个字段,一个finish标志, 子任务数量,   子任务完成数量
    每当完成一个子任务的时候,修改 子任务完成数量加一,当子任务完成数量等于 子任务数量,的时候,设置主表finish标志为完成状态。。
    当然,如果你的修改比较频繁,为了避免读写锁定等问题, 可以把这三个字段分离到 另外一个表这个表通过外键与主表关联
    这样,你的主表就几乎没有修改操作了   
    查询的时候关联查询就是了。
      

  3.   

    主表不设完成标志位, 直接用语句判断#taskId对应的task是否完成
    select count(id) from detailTask dt where dt.detailState <> 2 and dt.taskId = #taskId;