深入解析delete和truncate不同之处

Deletetrucate都用来删除表中的数据,那它们有什么不同之处呢?我先概要的将它们的不同之处说出,然后用测试依次来证实我所说的不同之处。

(1)     deleteDML操作,需要生undo成数据,在没有commit前可以回滚。truncateDDL操作,不需要生成undo数据,也无法回滚。

(2)      delte操作并不降低水位线hwm,也就是无法释放被删除记录所占用的块空间,undo相反,降低hwm,释放被删除记录所占用的表空间。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。

(3)      detele的执行速度要远远低于truncate,就像要求你把一本书扔掉,detele操作是一页一页撕下来,而truncate则是把整本书直接扔到垃圾桶,造成它们速度差距的根本原因除了有无undo数据的生成之外,和它们在块上的实现操作有关,而如何有关,我也是尚不清楚。

(4)      TRUNCATE不能触发任何DELETE触发器

(5)      不能授予任何人清空他人的表的权限

(6)       不能清空父表
http://space.itpub.net/27425054/viewspace-749401

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26308209/viewspace-749796/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26308209/viewspace-749796/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值