我在每个 INSERT 语句之后都有 COMMIT。
我想知道在
COMMIT;
之后我是否需要INSERT /*+ append */
...
您可能 不想 想在每个
INSERT
之后提交,但您可能 do 想在每个 INSERT /*+ APPEND */
之后提交。
对于传统的
INSERT
,您可能只想在应用程序的逻辑事务完成时提交。在每次常规插入后不必要地提交会导致性能和原子性问题。
对于直接路径
INSERT /*+ APPEND */
,您可能需要尽快提交。直接路径写入以额外锁定(和其他问题)为代价提高性能。额外的锁定会阻止每个会话,甚至是当前会话,甚至在提交事务之前都无法读取对象。为了避免错误ORA-12838: cannot read/modify an object after modifying it in parallel
,程序通常在每个INSERT /*+ APPEND */
之后提交。