<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
    Truncate Table介紹
    ?
    ??? 由于經常要用到Truncate、delete、drop等命令,但是可能還有一些同學不是太了解操作過程中及之后數據庫中數據結構的變化以及可能帶來的后果,所以在這里編寫了一些相關的資料,寫的比較凌亂,不過重要的知識點基本涉及到了,希望對各位同學有幫助,有不妥的地方望指正。
    ?
    ??? 語法:TRUNCATE TABLE [schema.] table [{DROP | REUSE} STORAGE]
    ??? 功能:刪除整個表的數據并釋放空間

    ?
    ??? 由于Truncate是DDL命令,所以執行過程中原數據不放在RollbackSegment中,不產生回滾數據,不產生Redo Log。
    ??? Truncate、Drop等DDL命令都是隱含提交的。
    ?
    ??? 例子:
    ??? A、B 為兩個Table
    ??? A、B 的數據分別放在 erp_data 表空間下
    ??? A、B 的索引分別放在 erp_indx 表空間下
    ?
    ??? 那么我們使用下面的兩個語句刪除兩個表中的數據
    ??? truncate table A drop storage;
    ??? truncate table B reuse storage;
    ?
    ??? 得到的結果將是:

    ??? Truncate table A drop storage;
    ??? --data:數據部分所在的extent空間會被釋放(釋放回收到minextents個extent),騰出來的空間可以供其它segment使用。
    ??? --index:B表的index部分會數據刪除,extent部分也被釋放,剩下第一個extent。
    ??? --hwm:會將HWM重新設置到第一個Block的位置(hwm 會改變)。

    ?
    ??? Truncate table B reuse storage;
    ??? --data : 數據部分所在的extent空間不會被回收(僅僅數據會被刪除),數據刪除之后的freespace空間只能供本表使用,不可以供其它segment使用。
    ??? --index : B表的index部分會數據刪除,但是保留extent部分。
    ??? --hwm : 會將HWM重新設置到第一個Block的位置(hwm 會改變)。
    ?
    ??? (具體的測試可以參考: http://www.itpub.net/showthread.php?threadid=588125&pagenumber )
    ?
    ?

    小結:
    ?
    ??? 使用Truncate將會:
    ?
    ??? 1、清除相應索引(不是Drop,仍然保留extent);
    ??? 2、受外鍵參考的約束(FOREIGN KEY)。當然必須先DISABLE或DROP相應的外鍵參考,才能TRUNCATE,注意沒有CASCADE選項;
    ??? 3、不觸發DELETE觸發器
    ??? 4、若使用了DROP STORAGE(缺省), 除了已指定的MINEXTENTS,其它EXTENT 重新分配NEXT_EXTENT 設置MINEXTENTS 之后的EXTENT,High-Water Mark 復位指向表中的第一個BLOCK。 使用REUSE STORAGE 保留表的使用空間 ,保留原來的擴展,但不合并; HWM(高水位)的位置RESET 到第一個BLOCK。 當使DROP STORAGE時將縮短表和表索引,將表收縮到最小范圍,并重新設置NEXT 參數。 REUSESTORAGE 不會縮短表或者調整NEXT 參數。另外一個區別是,用reuse storage可以減少對表及數據字典的鎖定時間,特別是大表常這樣做,余下和DEALLOCATEUNUSED 來逐步回收空間。Truncate 語句缺省情況(缺省情況為drop storage)下空間釋放到 minextents個 extent, 除非使用reuse storage (如果使用reuse storage,那么這些刪除之后留下的空間會被保持);Truncate 會將高水線復位(回到最開始)。 如果是整理表內部的碎片,可以用truncate 跟上reuse stroage,再重新導入/插入數據。Delete 語句不影響表所占用的extent, 高水線(high watermark)保持原位置不動 。 Delete 語句是DML,這個操作會放到rollback segement 中,事務提交之后才生效;如果有相應的trigger,執行的時候將被觸發。Drop 語句將表所占用的空間全部釋放。drop 語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index);依賴于該表的存儲過程/函數將保留,但是變為invalid 狀態。

    ??? 速度上,一般來說: drop> truncate > delete
    ?
    ?
    ?
    posted on 2009-03-05 21:11 decode360 閱讀(1303) 評論(0)  編輯  收藏 所屬分類: 07.Oracle
    主站蜘蛛池模板: 国产成人综合亚洲绿色| 国内永久免费crm系统z在线 | 亚欧洲精品在线视频免费观看| 亚洲中文字幕无码久久2017| h视频在线观看免费网站| 色九月亚洲综合网| 久久国产亚洲电影天堂| 免费黄色网址入口| 今天免费中文字幕视频| 国产精品自拍亚洲| 久久水蜜桃亚洲av无码精品麻豆 | 亚洲伊人久久大香线焦| 亚洲色图综合在线| 99久久免费国产精品特黄| 四虎国产精品永免费| 亚洲女人18毛片水真多| 三上悠亚亚洲一区高清| 在线观看av永久免费| 巨胸喷奶水www永久免费| 亚洲www77777| 亚洲精品影院久久久久久| 国产精品亚洲不卡一区二区三区 | 亚洲一卡2卡三卡4卡有限公司| 四虎影视在线永久免费看黄| 131美女爱做免费毛片| 国产精品一区二区三区免费| 国产亚洲精品成人AA片| 亚洲第一精品福利| 亚洲午夜激情视频| 国产日产成人免费视频在线观看| 67194成手机免费观看| 中文字幕无码免费久久9一区9 | 免费观看AV片在线播放| 日本高清免费观看| xxxxx做受大片视频免费| 亚洲大尺度无码无码专线一区| 亚洲噜噜噜噜噜影院在线播放| 亚洲AV无码久久精品狠狠爱浪潮| 亚洲成AV人在线观看网址| 免费无码看av的网站| 亚洲免费观看在线视频|