上传的图像用于项目: '光典档案室-8.0'
  1. 光典档案室-8.0
  2. GDDA8-10603

根据自定义where条件获取记录(不分页)这个方法,查询结果过多放到list中时占用内存过大。导致内存溢出。

    详情

    • 类型: 性能优化
    • 状态: 开发已修复
    • 优先级: 一般
    • 解决结果: 已修复
    • 影响版本:
    • 修复的版本: 8.5.1
    • 标签:
    • 需求分类:
      实施配置
    • 严重程度:
      一般

      描述

      查找类似问题,避免内存溢出

        附件

          活动日志

          隐藏
          qianjiang 钱江 添加了评论 -
          sharding服务中getListByCondition没有分页,如果传入不合理的查询条件,容易把大量数据取到本地。
          1、对方法getListByCondition,增加托底的分页参数(10000),保证不会取出太大量的数据
          2、一些调用的方法需要改造,采用先获取条数,再分页获取内容的方式,分批处理数据。
          显示
          qianjiang 钱江 添加了评论 - sharding服务中getListByCondition没有分页,如果传入不合理的查询条件,容易把大量数据取到本地。 1、对方法getListByCondition,增加托底的分页参数(10000),保证不会取出太大量的数据 2、一些调用的方法需要改造,采用先获取条数,再分页获取内容的方式,分批处理数据。
          隐藏
          gezhifeng 葛志峰 添加了评论 -
          com.cescloud.saas.archive.common.util.ArchiveUtil#getListByCondition(com.cescloud.saas.archive.api.modular.datasource.dto.DynamicArchiveDTO, long, com.cescloud.saas.archive.common.util.HandleArchivePageData)
          新增方法,参数1:dto,参数2:提前查出总数量,参数3:查询后返回处理业务逻辑。
          使用场景:没有明确指定filter,select * 的情况下,where条件没有指定id in (xx,xx),模糊的where条件,这种一般包含大数量的查询,需要调用以上这个方法,分批处理数据,托底分页数量10000.
          显示
          gezhifeng 葛志峰 添加了评论 - com.cescloud.saas.archive.common.util.ArchiveUtil#getListByCondition(com.cescloud.saas.archive.api.modular.datasource.dto.DynamicArchiveDTO, long, com.cescloud.saas.archive.common.util.HandleArchivePageData) 新增方法,参数1:dto,参数2:提前查出总数量,参数3:查询后返回处理业务逻辑。 使用场景:没有明确指定filter,select * 的情况下,where条件没有指定id in (xx,xx),模糊的where条件,这种一般包含大数量的查询,需要调用以上这个方法,分批处理数据,托底分页数量10000.

            人员

            • 经办人:
              gezhifeng 葛志峰
              报告人:
              mayurong 马玉荣
            • 管理关注列表:
              3 开始关注这个问题

              日期

              • 创建日期:
                已更新:
                已解决:
                要求解决日期:

              将文件拖放到此处以给问题添加附件