zoukankan      html  css  js  c++  java
  • drop与truncate

    drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。
    通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句
    flashback table to before drop [rename to ];
    将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。
    若要彻底删除表,则使用语句:drop table purge;
    清除回收站里的信息 清除指定表:purge table ;
    清除当前用户的回收站:purge recyclebin;
    清除所有用户的回收站:purge dba_recyclebin;
    不放入回收站,直接删除则是:drop table xx purge;

    在oracle中,对于数据库中的大数据量在delete时,速度那是相当的慢。其实可以有另外的删除数据的方法,就是可以使用truncate来删除表中的数据。但这种方法在删除时,虽然速度比delete快很多。但由于是不可回滚的,因此在truncate后,数据是无法恢复的。这一点很重要,一定要记牢。
    下面,我们来了解一下为什么truncate会比delete快很多。
        它们都是删除表中的数据,而不能删除表结构,delete 可以删除整个表的数据也可以删除表中某一条或N条满足条件的数据,而truncate只能删除整个表的数据,一般我们把delete 操作收作删除表,而truncate操作叫作截断表。

        truncate操作与delete操作对比
      操作       回滚     高水线    空间      效率
      Truncate   不能     下降      回收       快
      delete     可以      不变    不回收      慢

    下面分别用实例查看它们的不同

    1、回滚
    首先要明白两点
    1.在oracle 中数据删除后还能回滚是因为它把原始数据放到了undo表空间,
    2.DML语句使用undo表空间,DDL语句不使用undo,而delete是DML语句,truncate是DDL语句,别外DDL语句是隐式提交.
    所以truncate操用不能回滚,而delete操作可以.

    2、高水线
    所有的Oracle表都有一个容纳数据的上限(很象一个水库历史最高的水位),我们把这个上限称为“high water mark”或HWM。这个HWM是一个标记(专门有一个数据块用来记录高水标记等),用来说明已经有多少数据块分配给这个表. HWM通常增长的幅度为一次5个数据块.
    delete语句不影响表所占用的数据块, 高水线(high watermark)保持原位置不动
    truncate 语句缺省情况下空间释放,除非使用reuse storage;   truncate会将高水线复位

    高水线的作用: HWM对数据库的操作有如下影响:
    a) 全表扫描通常要读出直到HWM标记的所有的属于该表数据库块,即使该表中没有任何数据。
    b) 即使HWM以下有空闲的数据库块,键入在插入数据时使用了append关键字,则在插入时使用HWM以上的数据块,此时HWM会自动增大。
    因此高水线是oracle优化时一个重要的参数

    3、空间
    既然高水线用来说明已经有多少数据块分配给这个表,那么高水线也可理解为表的空间占用。
    即使delete将表中的数据全部删除,HWM还是为原值,所以还有那么多的空间分配给这个表,即它的空间还没有回收,
    而truncate表后高水线变为0,那现在它就表示没有分配空间,即它的空间被回收了。

    4、效率
    在相同的数据量删除的情况下,truncate会比delete快几十倍。这个在真实的环境中测试过。

    HWM 最高水位线
    delete 不会移动HWM的位置,truncate 会移动。
    全表扫描通常要读出直到HWM标记的所有的属于该表数据库块,即使该表中没有任何数据。
    当向oracle插入数据时,是以区为单位进行扩展的,不是块
    oracle 用最高水位线(HWM)来界定一个段中使用的块和未使用的块
    ALTER TABLE TEST_TAB MOVE;移动HWM
    可以使用ALTER TABLE TEST_TAB SHRINK SPACE命令来联机移动HWM,

  • 相关阅读:
    BFS visit tree
    Kth Largest Element in an Array 解答
    Merge k Sorted Lists 解答
    Median of Two Sorted Arrays 解答
    Maximal Square 解答
    Best Time to Buy and Sell Stock III 解答
    Best Time to Buy and Sell Stock II 解答
    Best Time to Buy and Sell Stock 解答
    Triangle 解答
    Unique Binary Search Trees II 解答
  • 原文地址:https://www.cnblogs.com/luluQQ/p/5153321.html
Copyright © 2011-2022 走看看