背景:
前期调研不够专业, 对于Subject(业务)数据量存在误判, 100->10000
- 代码使用递归算法, 依照数据库配置生成树形数据结构, 返回给前台
问题:
查询慢 (10000+树状数据--->102秒)
-
每次递归都会查询数据库
-
索引未执行
解决:
-
要求开发人员, 此表查询必须按 指定租户信息顺序条件 查询, 执行索引
-
子节点递归使用并行流 parallelStream
-
- fork join算法的并行流遇上非平均的业务数据效果不好,且存在数据库IO耗时,故改用CompletableFuture.supplyAsync并指定线程池(如不指定仍然是fork join)
最终耗时降至6秒, 不大改代码且客户可接受