首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

2012-04-04 
一次事务提交和多次事务性能有什么差别有个功能,从文件中读取数据,处理后,写入数据库中。现在的做法,每次读

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

      现在的做法,每次读入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条一个事务,那个小事务出问题则回滚该事务,发现已提交的小事务出了问题就要回滚大事务重新来了
性能要测试来看,得到一个最优的
但是既然用到事务说明你要保证数据的可靠性,这个比性能更加重要

热点排行