1

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

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

或者

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

4

2 回答 2

0

您可以使用以下方法找出查询完成的百分比:

SELECT SESSION_ID, percent_complete, estimated_completion_time
FROM SYS.DM_EXEC_REUQESTS
于 2013-03-01T12:21:48.107 回答
-1

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

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

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

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

此外,如果您使用条件删除,删除过程应该比单独插入需要更多时间。

PS顺便谢谢你的问题,这很有趣,让我对Oracle内部进行了一些研究。

于 2013-03-01T12:55:25.580 回答