Db.batch(....) 中的参数 batchSize 有些不利于事务控制-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Db.batch(....) 中的参数 batchSize 有些不利于事务控制

2016-06-08 15:36:59 2590 1

在一个事务中 ,我传入1 万条数据用于批处理,设置 batchSize 为 100条,在最后一百条出错了,结果事务回滚,但是回滚的只是最后的一百条数据,前面的9900条已经入库,我也不知道是哪些数据出了错。假设我通过某种途径修正了1万条中错误的数据,这时我想按先前的批处理进行再一次的入库,咋办???

所以我觉得batchSize 这个变量应该由使用者自己去定义,不应该作为batch的参数传入。JFinal 的 batch 只需要负责给了多少数据就一次性commit多少数据,每一次批量提交都在一个事务中控制,这次失败了,那就把这次的数据回滚,至于批量提交多少次,那就是使用者自己控制了。 这样的话,使用者就知道哪一批次的数据错了,如果可以的话,可以开启另外的线程异步处理掉这批错误数据,当前线程接着处理下一批次的数据。

取消 提交回答
全部回答(1)
  • 小旋风柴进
    2019-07-17 19:32:05

    1、基于使用者清楚批量操作的数据量限制的前提下,其实使用者手动分好批次执行batch和指定batchsize参数执行木有太大区别。唯一一点就是如果指定参数程序自动分批次的话,在发生异常的时候可能需要在报告异常的时候,指明是第几个批次失败了,否则就要去check数据才能知道。

    2、如果使用者不知道批量操作的数据量限制的话,batchsize参数可能会给使用者带来疑惑。

    综上,带有batchsize参数有两点好处:1、省代码,不用自己写循环和其他重复代码。2、强制使用者清楚数据量是批量操作成功与否的因素之一。 当然凡事都是双刃剑,缺点可能就如楼主和上述所述。

    建议,是否可以考虑加一批不带batchsize参数的重载,即默认batchsize为Integer.MAX_VALUE?其次,自动分批次如果异常能否提示批次号?

    0 0
相关问答

0

回答

链接中库中的表都会过滤一遍,不想这样的效果怎么办

2022-10-06 09:30:57 513浏览量 回答数 0

1

回答

请问下PTS全链路中不同接口使用DB数据源中的同一个参数时,是按照每次执行一个并发时去查一次,还是先

2022-09-22 11:13:04 89浏览量 回答数 1

1

回答

什么是Ingress 高级用法中的配置URL 重定向的路由服务?

2022-07-04 16:18:02 386浏览量 回答数 1

1

回答

对于许多流应用程序来说,数据丢失是不可接受的,为了保证这一点,Flink 设计了什么机制?

2022-05-10 18:27:23 71浏览量 回答数 1

1

回答

在应用容灾中关于过滤表的关键技术问题中需要双写的业务表包括哪些?

2022-05-09 14:14:11 101浏览量 回答数 1

1

回答

express中如何获取路由的参数呢?

2021-12-11 19:20:46 144浏览量 回答数 1

1

回答

利用数组使数据关于一张表格左对角线对称交换

2016-02-20 15:15:28 1914浏览量 回答数 1

2

回答

aliyunubuntu二级域名该如何使用.求大神给方法百度不到

2015-10-05 04:57:47 5056浏览量 回答数 2

2

回答

npy.中国域名绑定不了显示格式不对怎么办

2015-04-11 20:09:56 3648浏览量 回答数 2

3

回答

可用区和独立磁盘 求科普

2014-07-24 10:01:58 4459浏览量 回答数 3
文章
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载