首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

truncate跟delete的区别

2012-07-15 
truncate和delete的区别删除表中数据的方法有delete和truncate,delete可以删除整个表的数据,也可以删除满

truncate和delete的区别
删除表中数据的方法有delete和truncate,delete可以删除整个表的数据,也可以删除满足条件的一条或多条数据,但truncate只能删除整张表的数据.一般将delete操作称作删除表,truncate操作称作截断表.
对比操作如下:
  操作       回滚      高水线      空间      效率
truncate   不能       降低       回收       快
delete     能         不变       不回收     慢

1.回滚
  在oracle中删除的数据可以回滚是因为它把原始数据放到了undo表空间
  DML语句使用undo表空间,DDL语句不使用undo,delete属于DML语句,而truncate属于DDL语句,另外DDL语句是隐式提交.
2.高水线
  所有oracle都有一个容纳数据的上限,称之为high water mark(HWM),HWM通常增长幅度为5个数据块.
  delete语句不影响表所占用的数据块,高水线保持原位置不动;truncate语句缺省情况下释放空间,除非使用reuse storage; truncate会将高水线复位.

热点排行