zoukankan      html  css  js  c++  java
  • Oracle中的delete和truncate的关系

    转自:http://chenxy.blog.51cto.com/729966/168459

    1、相同点
            a.都可以删除数据,其中truncate用于全表清空数据,而delete可以选择的删除
    2、不同点:
            a.回滚,delete支持事物回滚,而truncate不支持。
               延伸:在oracle中事物能回滚,是因为oracle中设计的undo表空间。数据再删除后仍能回滚是因为把数据放到了undo表空间
                delte属于DML语言,DML语言需要手动提交事物,可以进行事务回滚
              truncate属于DDL语言,DDL语言属于隐式提交事务,因此不能进行回滚
           b.高水线
                  oracle中的表用来容纳数据的上限。high water mark(可形象理解为水库的历史最高水位),一般情况,每次增长为5个数据块。
                  delete操作执行时,不影响数据所占用的数据块,高水线保持不变
                     truncate操作执行时,会释放数据占用空间。高水线位置下降。也可以通过reuse store 来进行复位
                  可以通过数据库自带的block命令观察效果,oracle分配区时默认一次是7+1个,增长是5个.其中一些sql优化是针对数据占用空间来进行的,
               因为在查询数据时,即使该表没有数据,但只要占用了数据空间都会进行全表扫描。
          c.空间占用
                  delete不会释放,而truncate则回收了数据空间
          d.效率
                 可以通过删除数据所用时间来比较,结论:truncate>delete,(因为delte把数据放到了undo表空间)
       
  • 相关阅读:
    java之day4补充
    java之day4
    JAVA之day3对象
    JAVA之DAY3
    JAVA之DAY2
    element-ui表格添加复选框及根据列表中的数据判断是否可选
    h5手机端上传多张图片(界面上的展示图片,删除图片)
    模态框-开启关闭事件
    Vue-粒子特效(vue-particles)
    网页常用代码片段-sessionStorage存储JSON
  • 原文地址:https://www.cnblogs.com/lovebaoqiang/p/4289331.html
Copyright © 2011-2022 走看看