在.net开发中,一个oralceconnection只能有一个事务,
比如,现在有一连接conn,打开一事务,有100条DML语句,commit.
,如果我把这100条事务分解成10个事务,每个事务10条语句,让这10个事务串行的去提交,也就是说
conn.beginTransaction 10次,每次commit一个事务
请教第二种写法是不是会占用更多的资源?效率是高还是低呢?请给出原因或根据,谢谢!!

解决方案 »

  1.   

    100条,完全没必要分批提交,UNDO段足够支持。
    ORACLE推荐,必须提交时再提交,不是非提交不可,尽量不提交。
      

  2.   

    LS说的很好。楼主看看commit要干些什么就知道原因了。
      

  3.   

    像导DWH的数据每次几十万条数据一般做法是5000条COMMIT一次,当然UNDO够大。
      

  4.   

    几条dml sql语句提交一次的关键是你的每条dml sql处理的数据是多少,花费的时间是多少,举个例子:
    如果一条update dml sql影响的数据是10条记录,那么10条dml进行一次commit,就不如100条dml进行一次commit。
    如果一条update dml sql影响的数据是1万条记录,就可以考虑10条dml,甚至更少的dml进行一次commit。此外,如果一条update dml sql影响的数据是10条记录,但是时间消耗的很长,比如20秒,那么可以考虑,一条dml进行一次commit。这样可以减少锁等待。
      

  5.   

    1.在实时性较强的场合下,建议每执行一条,一个commit;
    2.如果每个事务时序要求不高,UGA空间较大的情况下,可以分批进行提交。
      

  6.   

    Oracle在这件事的处理上和informax,sysbase有很大的不同。1.Informax,Sysbase中每句执行完毕后,提交得越快越好;
    2.Oracle中,除非你真的需要提交,否则尽可能整体提交。因为每次提交需要耗费一定的资源。