堆栈深度超过限制

报错:Cause: com.kingbase8.util.KSQLException: 错误: 堆栈深度超过限制 Hint: 在确定了平台的堆栈深度限制是足够大后,增加配置参数 "max_stack_depth"的值(当前值为2048kB).; 错误: 堆栈深度超过限制 Hint: 在确定了平台的堆栈深度限制是足够大后,增加配置参数 "max_stack_depth"的值(当前值为2048kB).; nested exception is com.kingbase8.util.KSQLException: 错误: 堆栈深度超过限制 Hint: 在确定了平台的堆栈深度限制是足够大后,增加配置参数 "max_stack_depth"的值(当前值为2048kB).]

经过以下改进仍没能解决:

java 复制代码
        List<String> sampleInfoIds = sampleInfoList.parallelStream()
                .map(BaseEntity::getId).collect(Collectors.toList());//sampleInfoIds过大
        List<String> subList1 = sampleInfoIds.subList(0, sampleInfoIds.size() / 2);
        List<String> subList2 = sampleInfoIds.subList(sampleInfoIds.size() / 2, sampleInfoIds.size()-1);
    
        List<SampleInfoDTO> sampleInfoDTOList = sampleInfoMapper.getSampleInfoDTOByIds(subList1);
        List<SampleInfoDTO> sampleInfoDTOList1 =sampleInfoMapper.getSampleInfoDTOByIds(subList2);
        sampleInfoDTOList.addAll(sampleInfoDTOList1);
java 复制代码
  List<String> sampleInfoIds = sampleInfoList.parallelStream()
                .map(BaseEntity::getId).collect(Collectors.toList());
        int batch=7000;
        int c=(int) Math.ceil((sampleInfoIds.size()*1.0)/batch);
        List<SampleInfoDTO> sampleInfoDTOList=new ArrayList<>();
        List<CompletableFuture> completableFutures=new ArrayList<>();
        for (int i=0;i<c;i++){
            int fromIndex=i*batch;
            int endIndex=(i+1)*batch-1;
            List<String> ids=sampleInfoIds.subList(fromIndex,Math.min(endIndex, sampleInfoIds.size()-1));
            CompletableFuture<List<SampleInfoDTO>> future = CompletableFuture.supplyAsync(() -> {
                return sampleInfoMapper.getSampleInfoDTOByIds(ids);
            }, executor);
            completableFutures.add(future);
        }
        CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).join();
        for (CompletableFuture future : completableFutures) {
            try {
                sampleInfoDTOList.addAll((List<SampleInfoDTO>)  future.get());
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            } catch (ExecutionException e) {
                throw new RuntimeException(e);
            }
        }
相关推荐
霖霖总总40 分钟前
[小技巧56]深入理解 MySQL 聚簇索引与非聚簇索引:原理、差异与实践
数据库·mysql
伐尘1 小时前
【MySQL】间隙锁 与 排他锁 的区别
数据库·mysql
快乐非自愿3 小时前
【面试题】MySQL 的索引类型有哪些?
数据库·mysql·面试
霖霖总总3 小时前
[小技巧55]深入解析数据库日志机制:逻辑日志、物理日志与物理逻辑日志在 MySQL InnoDB 中的实现
数据库·mysql
luoluoal6 小时前
基于python的人脸识别的酒店客房入侵检测系统(源码+文档)
python·mysql·django·毕业设计·源码
uoKent6 小时前
MySQL示例数据库
数据库·mysql
x70x806 小时前
# Docker 搭建 MySQL 8 主从复制(踩坑实录 + 完整验证)
mysql·docker·容器
占疏6 小时前
数据库-BRIN 索引
数据库·mysql
heze098 小时前
sqli-labs-Less-28a
数据库·mysql·网络安全
无限码力9 小时前
华为OD技术面真题 - 数据库MySQL - 3
数据库·mysql·华为od·八股文·华为od技术面八股文