thunguo opened a new issue, #1128:
URL: https://github.com/apache/incubator-seata-go/issues/1128

   ### ✅ 验证清单
   
   - [x] 🔍 我已经搜索过 [现有 
Issues](https://github.com/apache/incubator-seata-go/issues),确信这不是重复请求
   - [x] 📋 我已经查看了 
[发布说明](https://github.com/apache/incubator-seata-go/releases),确信此功能尚未实现
   - [ ] 🛠️ 我愿意自己处理这个议题
   
   ### 🎯 功能描述
   
   在 Java 版 Seata 的 AT 模式中,当应用通过 JDBC 的 `PreparedStatement.addBatch()` + 
`executeBatch()`,用同一条 SQL 模板绑定多组参数批量执行(典型场景是批量 UPDATE/INSERT/DELETE)时,SQL 
执行器会针对整个批次构建正确的前镜像/后镜像与回滚日志,保证整批操作可以作为一个整体被正确回滚。
   
   seata-go 目前还没有对应"一条 SQL 模板 + 多组参数批量执行"场景的处理路径。需要新增支持批量语义的执行器(或者在现有 
insert/update/delete executor 基础上扩展),使 AT 模式在处理这种批量执行时能够:
   - 针对整个批次涉及的所有行,正确构建前镜像/后镜像;
   - 为整个批次生成一致的、原子的回滚日志;
   - 即使批次中部分执行失败,也能保证回滚的正确性。
   
   实现上应尽量对齐 Java 版本的语义,同时兼顾 Go `database/sql` 驱动模型的限制。
   
   
   ### 📋 使用场景
   
   - 使用 Go 服务/ORM 框架,对同一条 SQL 模板绑定多组参数批量执行(如按主键批量更新、批量插入)以提升吞吐量,这与 Java 服务中常见的 
`addBatch`/`executeBatch` 用法一致,便于 Java 迁移到 Go 的场景平滑过渡。
   - 依赖批量 DML 提升性能的数据迁移/批处理任务。
   
   ### ⚖️ 复杂性与风险评估
   
   _No response_
   
   ### 🔗 外部依赖
   
   Go 的 `database/sql` 驱动接口本身没有与 JDBC batch API 
对等的"批处理"概念,代理层需要能够识别/表达一批参数集合,并保证镜像构建与回滚日志生成在整个批次范围内保持一致和原子性,设计上需要格外谨慎。
   
   ### 📚 附加信息
   
   参考:Java 版 Seata(2.x)SQL 执行器中对批量 update/insert/delete 的实现,seata-go 
解析器相关代码中已提及以其作为兼容性设计基线。


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to