优化订单与账单镜像分批读取及内存释放 #396

Merged
WuYongJie merged 1 commits from fix/wuyongjie-order-sync-timeouts into main 2026-10-19 21:04:42 +08:00
Owner

变更

  • 主订单和原始账单的 SQL Server 增量同步先用原有窗口和稳定游标选取有限主键,再在同一条只读 SELECT 内按主键取完整列;保持原有默认批量、排序、时间转换和断点。
  • 仅对两个明确登记的数据集启用;首次全量及其他数据库方言保持原有路径。
  • 归一化后复用批次变量,落库后立即释放,避免上批数组驻留至下批读取。
  • 同步异常新增阶段、SQLSTATE、数字驱动码和耗时;不记录原始错误消息、SQL、参数或连接资料。上一版镜像和最后成功时间继续保留。

验证

  • 同步器和只读 SQL 边界测试:30 项 / 129 断言通过。
  • 在生产受限批容器内按现有互斥锁执行只读验证:新旧主订单查询同一固定窗口逐字段一致;原始账单改写与先前同窗口样本校验一致,且配对验证中新查询返回、旧查询超时。
  • 原始账单配对读取:新查询约 0.03 秒 / 500 行;同条件旧查询 15 秒超时。上游缓存和实时负载影响耗时,不承诺每次相同。

范围与限制

  • 不改金额计算、权限、业务数据库结构或连接配置;没有迁移,没有上游写入。
  • 未提高超时、未添加脏读、未关闭同步、未重跑全量。两个其他上游订单视图仍缺少可用的增量索引查找路径,已单独整理给上游负责人检查;本 PR 不宣称解决该外部阻塞。
  • 数据库缓冲池仍为 4GiB;本 PR 不含生产参数调整。
## 变更 - 主订单和原始账单的 SQL Server 增量同步先用原有窗口和稳定游标选取有限主键,再在同一条只读 SELECT 内按主键取完整列;保持原有默认批量、排序、时间转换和断点。 - 仅对两个明确登记的数据集启用;首次全量及其他数据库方言保持原有路径。 - 归一化后复用批次变量,落库后立即释放,避免上批数组驻留至下批读取。 - 同步异常新增阶段、SQLSTATE、数字驱动码和耗时;不记录原始错误消息、SQL、参数或连接资料。上一版镜像和最后成功时间继续保留。 ## 验证 - 同步器和只读 SQL 边界测试:30 项 / 129 断言通过。 - 在生产受限批容器内按现有互斥锁执行只读验证:新旧主订单查询同一固定窗口逐字段一致;原始账单改写与先前同窗口样本校验一致,且配对验证中新查询返回、旧查询超时。 - 原始账单配对读取:新查询约 0.03 秒 / 500 行;同条件旧查询 15 秒超时。上游缓存和实时负载影响耗时,不承诺每次相同。 ## 范围与限制 - 不改金额计算、权限、业务数据库结构或连接配置;没有迁移,没有上游写入。 - 未提高超时、未添加脏读、未关闭同步、未重跑全量。两个其他上游订单视图仍缺少可用的增量索引查找路径,已单独整理给上游负责人检查;本 PR 不宣称解决该外部阻塞。 - 数据库缓冲池仍为 4GiB;本 PR 不含生产参数调整。
WuYongJie added 1 commit 2026-10-19 21:04:29 +08:00
WuYongJie merged commit 31f6c72bf3 into main 2026-10-19 21:04:42 +08:00
WuYongJie deleted branch fix/wuyongjie-order-sync-timeouts 2026-10-19 21:04:43 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WuYongJie/CaiWuXiTong#396
No description provided.