|
比喻的是经典
更精确的说
delete是DML,他需要记录前当前的副本,以方便回滚,
这个镜象记录的是整个行的数据,所以会占用很大的回滚段空间。因此在删除海量数据的时候是非常的慢,他不光占用回滚段的大量空间,还会产生大量的日志,如果是在archivelog模式,数据库会频繁的切换日志,产生很多的归档日志。
特殊情况下,如果回滚段空间太小的话,删除大量数据会报ORA-30036: 无法按 8 扩展段错误
但是truncate table却可以正确执行
truncate是DDL操作,他只记录了很少的日志,而且他无法回滚,他只记录必要的数据字典的改变信息,因此速度快。 |
|