重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
--1、創(chuàng)建測試表
公司主營業(yè)務(wù):做網(wǎng)站、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出黃浦免費做網(wǎng)站回饋大家。
create table cux.cux_test_data as
select * from GL_JE_HEADERS;
--2、查看數(shù)據(jù)條數(shù)
select count(1) from cux.cux_test_data;
--3、查看區(qū)塊大小
SELECT segment_name
,extents
,blocks
,initial_extent
FROM dba_segments
WHERE segment_name = 'CUX_TEST_DATA';
--4、刪除表,采用truncate方式
truncate table cux.cux_test_data;
--查看數(shù)據(jù)塊大小
SELECT segment_name
,extents
,blocks
,initial_extent
FROM dba_segments
WHERE segment_name = 'CUX_TEST_DATA';
由此可見truncate會清除表所占數(shù)據(jù)塊的大小;
--5、刪除表,采用delete方式
首先對測試表進(jìn)行重新插入操作,查得數(shù)據(jù)塊大小如下:
執(zhí)行刪除操作:
delete from cux.cux_test_data;
再次查詢表所占數(shù)據(jù)塊大小如下:
可看出,所占數(shù)據(jù)塊并沒有變動;
--當(dāng)delete完數(shù)據(jù)之后,再往測試表中插入100萬條數(shù)據(jù),再次查詢數(shù)據(jù)塊大小如下:
發(fā)現(xiàn)跟刪除前一樣,也就是說當(dāng)delete相關(guān)的數(shù)據(jù)之后,再插入數(shù)據(jù)如果比刪之前的數(shù)據(jù)小,則表空間分布不會變;當(dāng)插入的數(shù)據(jù)比刪之前多時,才會增加數(shù)據(jù)塊大小;
--6、采用SHRINK和MOVE方式去收縮表空間
ALTER TABLE cux.cux_test_data MOVE; --降低水位線,釋放表空間
注意:alter table move命令可以釋放空間,該操作期間會鎖表;
而且會導(dǎo)致索引失效,如果該表有索引,還需要進(jìn)行索引重建操作,重建索引腳本如下:
ALTER INDEX XXX REBUILD ONLINE; --重建索引
alter table cux.cux_test_data enable row movement; --啟用行遷移
alter table cux.cux_test_data shrink;--降低水位線
上述兩步種方式收縮完之后,表空間已釋放
結(jié)論:
1、TRUNCATE刪除表會直接釋放表空間;
2、DELETE刪除表不會釋放表空間,若要釋放,可采用SHRINK和MOVE方式進(jìn)行收縮。