注册

ShardingJDBC 5.5.0 与 Spring Boot 3.3.13:分页查询未触发内存归并(返回20条而非5条记录)

苏叶新城 2025/11/17 50 0

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: 8.1
【操作系统】:
【CPU】:
【问题描述】*:

环境信息

  • Spring Boot 版本:3.3.13
  • ShardingJDBC 版本:5.5.0
  • 数据库:达梦数据库(类Oracle语法)
  • 分片配置:4张表,采用分页规则

问题描述

使用 Spring Data 的 PageRequest 执行分页查询时,预期的内存归并查询未触发,导致分页行为异常。

代码示例:

PageRequest page = PageRequest.of(0, 5, Sort.by(Sort.Direction.DESC, "id")); Page<BusinessLog> certs = businessLogDao.findAll(page);

预期结果:

  • 应返回5条记录(符合分页大小设置)
  • 应从4个分片表归并结果并按ID降序排序

实际结果:

  • 返回20条记录(来自4个分片,每个分片5条,未正确归并)
  • 内存归并操作未执行

关键现象

  1. 分页大小被忽略——返回20条而非5条记录
  2. 排序可能未在所有分片间正确应用
  3. 无内存结果归并的迹象

需要协助的问题

1. 配置问题

  • 是否可能存在与达梦数据库的兼容性问题?

2. 手动触发

  • 是否有方法手动触发或强制内存归并查询?

3. 排查指导

  • 推荐何种调试方法定位该问题?
  • Spring Data JPA仓库方法与ShardingJDBC分页是否存在已知限制?

4. 数据库特性

  • 达梦数据库(类Oracle)是否需要特殊处理?
  • 是否需要方言配置或兼容性设置?
回答 0
暂无回答
扫一扫
联系客服