我应该在每个SQL操作之后提交,还是执行多个操作然后提交?哪个更有效?

我应该在每个SQL操作之后提交,还是执行多个操作然后提交?哪个更有效?,sql,oracle,transactions,commit,Sql,Oracle,Transactions,Commit,我需要一些关于SQL提交的SQL场景的说明 例如: 1) DELETE FROM tablename WHERE column_name = 'value'; COMMIT the above transaction; Versus 2) for (i...n){ DELETE FROM tablename WHERE column_name ('value'); }

我需要一些关于SQL提交的SQL场景的说明

例如:

    1)  DELETE FROM tablename WHERE column_name = 'value';
        COMMIT the above transaction;

    Versus

    2) 
         for (i...n){
            DELETE FROM tablename WHERE column_name ('value');
         }

         COMMIT after 'N' transactions..
考虑N>=10,在这种情况下,DB上的应力是否比第一种方法更好,或者第二种方法是否与第一种方法具有相同的效果。。。
我知道最好的方法是在子句中传递多个值。。。只需要知道第二个是否比第一个更好?

每N个事务提交一次,对数据库日志记录设施来说确实更快更好。取舍是如果必须重新启动流程,您愿意丢失多少数据

例如,您有10000000个批处理行要加载。如果进程在第7543232行崩溃,您能负担得起重新加载多少行


是的,您需要对值执行一个带有bind参数(?marks)的prepare语句,然后对每一行值的语句句柄执行一次execute。

这里的答案将是广泛的。循环中删除并没有真正的好处,除非您为表启用了复制。让数据库处理更好。如果删除太大,要保留的行小于要删除的行,那么在将所需行复制到临时表之后,考虑截断。除此之外,频繁提交其实并不坏。当它刷新日志时。此外,不可恢复的删除更好,但是/1)几乎总是更快(参见他在评论Stephen的答案时发布的链接Axel Pool)。有点吹毛求疵:您不会“在n个事务之后提交”——而是在n个语句之后提交。每次提交都会结束一个事务。此外,重做日志过大也是一种折衷。您也不希望在一次提交中包含10000000行。Comitting会生成更多撤消操作并降低速度。为什么不想一次提交1000万行?只要你的撤销大小合适,为什么会有问题呢?谢谢你的提醒。我是甲骨文的新手。在Informix中,经验法则总是相当频繁地提交。我喜欢这个新的链接: