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。
高水位线的说明:
1. 块是粒度最小的存储单位,现在标准的块大小是8K,oracle 每一次IO操作也是按块进行操作的,也就是说当Oracle从数据文件读数据时,是读取多少个快,不是多少行
2. 在oracle 中,执行对表的delete操作不会删除表的高水位线,这就好比池塘里一开始是没水的,当你把水到放池塘,池塘里就有一个位置,就是高水位线,而 用select去访问,全表扫描的时候,则从从高水位线以下开始扫描,并不关心里面有没有数据。
3. 当使用直接路径向表中插入数据时,就算HWM下有空闲的数据块,则在插入时也只能使用HWM以上的数据块。
4. HWM存放在表的segment header中,因为有一个数据库块被保留用作segment header。
相关文章推荐
- Truncate Delete Drop 的区别以及 高水位HWM
- oracle常见问题:delete truncate drop的区别
- Shrink Database知识点以及Truncate和Delete语句的区别
- Oracle中TRUNCATE和Delete区别及TRUNCATE使用说明
- drop、truncate、delete的区别以及SQL四种语言:DDL,DML,DCL,TCL
- SQL truncate 、delete与drop区别,以及一个实际案例
- oracle 删除临时表以及truncate和delete的区别
- MySQL——delete 和 truncate 以及 drop 区别
- Delete与Truncate以及Drop的区别
- spring 注解说明以及@Resource和@Autowired的区别
- MySQL 中 truncate、delete、drop 的区别
- SQL truncate 、delete与drop区别
- truncate和 delete删除数据的区别
- 实例对比Oracle中truncate和delete的区别
- 今天碰到一个问题,怎么限制用户在固定宽度的input输入框里输入的长度,由此涉猎到了maxlength属性和size属性以及它们的区别。
- SQL truncate 、delete与drop区别(转)
- truncate 和delete的区别
- truncate与delete的区别
- Oracle之delete与truncate区别?
- truncate和delete有何区别