RT

解决方案 »

  1.   

    指的是内部块和外部块?看你希望什么时候提交,内和外属于同一个session
      

  2.   

    看业务。
    比如你的整个存储过程是一个事务,甚至可以最后commit,或者由调用方来commit。
    但如果内部需要分段提交,那还是要自己控制的。比如内部出错,要插入数据库日志表,那就需要commit。还有就是大数据量的DML,可能也采用分段commit比较好。
    比如造测试数据的时候:
    for i in 1..1000000 loop
           insert into ....
           if mod(i,10000)=0 then  --1万提交一次
             commit;
           end if;
    end loop
    就比最后提交要好。最后一次提交100万,可能会回滚空间不足。
      

  3.   

    不管多少数据进行commit,它们花费的时间是一样的,就commit操作而言。
    不过如果数据量比较少,而且commit提交频繁的话,这样花费的撤销空间比较多。