什么是RollbackSegment(已truncate和delete命令为例)?Rollback Segments是在你数据库中的⼀些存储空间,它⽤来临时的保存当数据库数据发⽣改变时的先前值,Rollback Segment主要有两个⽬的:
truncated form1. 如果因为某种原因或者其他⽤⽤户想要通过ROLLBACK声明来取消⼀个⼈的数据操作,数据就会复原到之前为改变时的值。这种情况只在transaction的过程中有效,如果⽤户执⾏了COMMIT命令,那么ROLLBACK SEGMENT⾥⾯的值就会标识为失效的,数据改变就将永久化。
2. 另⼀个⽬的是当有并发的session访问了⼀个数据值改变但事务还没有提交的表。如果⼀个SELECT语句开始读取⼀个表同时⼀个事务也在修改这个表的值,那么修改前的值就会保存到rollback segment⾥⾯,SELECT语句也是从ROLLBACK SEGMENT⾥⾯读取表的值。
⽐较truncate和delete 命令:
两者都可以⽤来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment(执⾏完没有提交或者回滚),⽴即释放空间。⽽Delete是DML操作, 需要rollback segment(执⾏完有提交或者回滚),不释放空间,且花费较长时间;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论