利用事务一次提交大量插入操作会撑爆数据库服务器内存吗?

2025-01-07 17:57:36
推荐回答(4个)
回答1:

不知道是什么数据库,oracle的话建议:
只需设置足够大的undo表空间,所谓足够大:insert操作要大于数据大小的一倍;update,delete操作要大于数据大小的两倍。当然你要兼顾其他操作的消耗。

提交数量可以认为与内存消耗没什么关系。

如你所述,如果分批的话,会涉及的整个事物的完整性,这和业务逻辑相关,
使用oracle的话,既然这需要是一个事务来提交,既没必要在分批。而且也不建议去故意分批进行操作。

不分批你唯一要承担的就是分批足够的undo空间。

回答2:

一般都是用statement的executeBatch方法实现批量数据入库操作。
还有一种SQL方式:insert into test(id,name) values('1','Jerry'),('2','Tom'),.....('n','Neo');这样看来,只要拼接好一条SQL,通过statement的execute方法就能实现批量插入操作。
但是一般平台开发都不会用这种方式。

回答3:

爆机的机率相当的高,我们做的时候一般大概是2万条左右提交一次,也就是分批提交。

回答4:

分配足够的undo表空间吧