插入和删除比较的回滚时间



对于Oracle RDBMS,哪个回滚更快?

Rollback1:插入1000000条记录,然后回滚

Rollback2:删除1000000条记录,然后回滚

您可以使用以下命令查看查询完成的百分比:

SELECT SESSION_ID, percent_complete, estimated_completion_time
FROM SYS.DM_EXEC_REUQESTS

要回答这个问题,我们应该知道Oracle内部是如何处理插入和删除操作的。我知道当你插入一些东西时,它会插入到内存中,然后当你提交的时候。Oracle写磁盘

对于删除操作,我发现:http://www.dba-oracle.com/t_oracle_soft_logical_deletes.htm所以它通常在逻辑上删除,当它可能时,它会实时删除。

现在我们应该谈谈回滚,当你回滚插入时,你从内存中清除行并清除重做日志。这听起来很简单。当你回滚一个删除时(如果Oracle是实时删除的),它应该去重做日志,读取,然后将删除的行插入回数据库。

因此,如果我是正确的和合乎逻辑的,回滚删除操作应该比回滚插入操作花费更多的时间。

如果你使用条件删除,删除过程应该比插入本身花费更多的时间。

注:顺便感谢你的问题,它很有趣,让我对Oracle内部做了一些研究。

最新更新