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

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

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

    Decode360's Blog

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

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

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

    ?
    ??? 得到的結(jié)果將是:

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

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

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

    ??? 速度上,一般來說: drop> truncate > delete
    ?
    ?




    -The End-

    posted on 2009-03-05 21:11 decode360-3 閱讀(368) 評論(0)  編輯  收藏 所屬分類: Oracle
    主站蜘蛛池模板: 亚洲AV综合色区无码二区爱AV| 亚洲码和欧洲码一码二码三码| 114级毛片免费观看| 亚洲福利一区二区精品秒拍| 成年人视频在线观看免费| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 亚洲色婷婷综合开心网| 午夜理伦剧场免费| 亚洲AV无码一区二区一二区| 亚洲乱码无码永久不卡在线| 免费99精品国产自在现线| 成人免费视频一区二区| 在线观看亚洲人成网站| 免费人成视网站在线观看不卡| 久久国产精品萌白酱免费| 国产亚洲精品欧洲在线观看| 亚洲人成在线播放网站岛国| 国产免费爽爽视频免费可以看| 无码人妻AV免费一区二区三区| 亚洲精品无码久久久久APP | 本免费AV无码专区一区| 波多野结衣亚洲一级| 丁香五月亚洲综合深深爱| 毛片a级毛片免费观看品善网| 国内精品免费在线观看| 亚洲GV天堂无码男同在线观看 | 黄色毛片免费网站| 亚洲欧洲日本国产| 久久久久国产亚洲AV麻豆| 丁香花免费完整高清观看| a毛片视频免费观看影院| 在线91精品亚洲网站精品成人| 亚洲激情校园春色| 亚洲无av在线中文字幕| 国产91在线免费| 无码区日韩特区永久免费系列 | 日日摸日日碰夜夜爽亚洲| 亚洲成aⅴ人在线观看| 国产亚洲av片在线观看播放| 亚洲精品tv久久久久| 永久免费bbbbbb视频|