假设我有一组ID.对于每个ID,我将根据ID在许多不同的表中插入许多记录.在插入差异表之间,将
调用不同的业务检查.如果任何检查失败,则基于此ID插入的所有记录都将是ROLLBACK.此批量插入操作是通过使用PL /
sql完成的. COMMIT和ROLLBACK的时间是否影响
性能以及它如何影响?例如,在完成所有ID后,我应该在完成一个ID或COMMIT的进程后进行COMMIT吗?
您的问题描述表明您有一大组较小的逻辑事务(每个新ID都是一个事务).您应该提交每个逻辑事务.等待提交整组事务的两个原因是:
>如果整个事务集实际上是事务本身 – 所有插入都必须成功才能提交任何行.在这种情况下,您较小的“交易”不是真正的交易.
>批量加载过程中没有重启功能,这实际上使这成为第1项的特殊情况.如果批量加载过程中止,则需要一种方法来跳过成功应用的ID.
Tom Kyte的建议是提交每个逻辑工作单元 – 交易.