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

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。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值