一次事务提交和多次事务性能有什么差别,该如何解决

一次事务提交和多次事务性能有什么差别
有个功能,从文件中读取数据,处理后,写入数据库中。

      现在的做法,每次读入1000行,利用prepare来执行1000次insert,最后统一commit;
      因为数据量比较大,有将近   100W   行,不知道改成每10000条commit一次,会不会效率更高呢?

------解决方案--------------------
这个要看你的服务器的网络吞吐量来定
你自己可以测试一下
然后确定用哪个数字合适

对于局域网我测试过 5000应该可以
更大我没有测试
------解决方案--------------------
我个人建议一次性提交:

1>
如果分几批提交,那么
有将近 100W 行, 如果分为1000次插入, 每次插入1000行, 如果在第500次的时候失败了, 已经入库的数据怎么办, 程序是不是还可以从501开始呢?

2>
事务本身也是有开销的. 100或1000次频繁事务,开销也是要考虑的.

//-----------------------------------
建议:
用bcp或opendatasource等方法来插入数据.具体用法搜一下, 贴子还是很多的.
------解决方案--------------------
试过大数据量的提交,最好不要超过1000条记录一次。如果字段比较多的话,500条一次比较快。


有将近 100W 行, 如果分为1000次插入, 每次插入1000行, 如果在第500次的时候失败了, 已经入库的数据怎么办, 程序是不是还可以从501开始呢?

是的,如果使用事务提交的话,就是从501开始。
------解决方案--------------------
关键在于出现失败后如何回滚前面已经commit的记录,解决了这个问题就是没有事务都无所谓
------解决方案--------------------
感觉多次事务好些,如果某次出现问题不用重新提交100W 数据

对于这个问题感觉用事务嵌套,总体用一个大的事务,然后每N条一个事务,那个小事务出问题则回滚该事务,发现已提交的小事务出了问题就要回滚大事务重新来了
性能要测试来看,得到一个最优的
但是既然用到事务说明你要保证数据的可靠性,这个比性能更加重要