您的位置:首页 > 其它

delete 和truncate的区别 以及高水位问题的说明

2018-01-23 14:32 274 查看
1. truncate 是DDL语句,delete 是DML语句 2. truncate的速度要快于delete ,原因是当我们delete时,会把删除的数据copy到回滚段,数据量不同花费的时间就不同。所以truncate语句不能回滚,delete 语句可以回滚,3. truncate会重置表的高水位线。delete不会。

高水位线的说明:

1. 块是粒度最小的存储单位,现在标准的块大小是8K,oracle 每一次IO操作也是按块进行操作的,也就是说当Oracle从数据文件读数据时,是读取多少个快,不是多少行

2. 在oracle 中,执行对表的delete操作不会删除表的高水位线,这就好比池塘里一开始是没水的,当你把水到放池塘,池塘里就有一个位置,就是高水位线,而 用select去访问,全表扫描的时候,则从从高水位线以下开始扫描,并不关心里面有没有数据。

3. 当使用直接路径向表中插入数据时,就算HWM下有空闲的数据块,则在插入时也只能使用HWM以上的数据块。

4. HWM存放在表的segment header中,因为有一个数据库块被保留用作segment header。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: