ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 深入解析delete和truncate不同之处

深入解析delete和truncate不同之处

原创 Linux操作系统 作者:blueice109 时间:2012-11-23 10:12:35 0 删除 编辑

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

(1)     delete是DML操作,需要生undo成数据,在没有commit前可以回滚。truncate是DDL操作,不需要生成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博客 ” ,链接:https://blog.itpub.net/26308209/viewspace-749796/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-03-27

  • 博文量
    12
  • 访问量
    105501