久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

oracle如何實現(xiàn)壓縮表

151次閱讀
沒有評論

共計 2883 個字符,預計需要花費 8 分鐘才能閱讀完成。

這篇文章給大家分享的是有關 oracle 如何實現(xiàn)壓縮表的內(nèi)容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

表壓縮是如何工作的

在 Orcle9i 第 2 版中,表壓縮特性通過刪除在數(shù)據(jù)庫表中發(fā)現(xiàn)的重復數(shù)據(jù)值來節(jié)省空間。壓縮是在數(shù)據(jù)庫的數(shù)據(jù)塊級別上進行的。當確定一個表要被壓縮后,數(shù)據(jù)庫便在每一個數(shù)據(jù)庫數(shù)據(jù)塊中保留空間,以便儲存在該數(shù)據(jù)塊中的多個位置上出現(xiàn)的數(shù)據(jù)的單一拷貝。這一被保留的空間被稱作符號表(symbol table)。被標識為要進行壓縮的數(shù)據(jù)只存儲在該符號表中,而不是在數(shù)據(jù)庫行本身內(nèi)。當在一個數(shù)據(jù)庫行中出現(xiàn)被標識為要壓縮的數(shù)據(jù)時,該行在該符號表中存儲一個指向相關數(shù)據(jù)的指針,而不是數(shù)據(jù)本身。節(jié)約空間是通過刪除表中數(shù)據(jù)值的冗余拷貝而實現(xiàn)的。

對于用戶或應用程序開發(fā)人員來說,表壓縮的效果是透明的。無論表是否被壓縮,開發(fā)人員訪問表的方式都是相同的,所以當你決定壓縮一個表時,不需要修改 SQL 查詢。表壓縮的設置通常由數(shù)據(jù)庫管理人員或設計人員進行配置,幾乎不需要開發(fā)人員或用戶參與。

1. 表級別:

1.1  創(chuàng)建一個壓縮表:

創(chuàng)建表時使用 COMPRESS 關鍵字,COMPRESS 關鍵字指示 Oracle 數(shù)據(jù)庫盡可能以壓縮的格式存儲該表中的行。

SQL create table tmp_test

(id number,phone varchar2(20),create_time date)

compress;

1.2  修改現(xiàn)有表為壓縮表:

SQL  alter table tmp_test compress;

取消表的壓縮:

SQL  alter table tmp_test nocompress;

1.3  確定表是否被壓縮:

確定一個表是否使用了壓縮, 查詢 user_tables,compression 字段表明表是否被壓縮.

SQL  select table_name,compression from user_tables where table_name not like BIN%

TABLE_NAME COMPRESS

—————————— ——–

CLASSES ENABLED

ROOMS ENABLED

STUDENTS DISABLED

MAJOR_STATS DISABLED

2. 表空間級別:

2.1  創(chuàng)建表壓縮空間:

可以在表空間級別上定義 COMPRESS 屬性,既可以在生成時利用 CREATE TABLESPACE 來定義,也可以稍后時間利用 ALTER TABLESPACE 來定義。

與其他存儲參數(shù)類似,COMPRESS 屬性也具有一些繼承特性。當在一個表空間中創(chuàng)建一個表時,它從該表空間繼承 COMPRESS 屬性。

可以在一個表空間直接壓縮或解壓縮一個表,而不用考慮表空間級別上的 COMPRESS 屬性。

2.2 使現(xiàn)有表空間轉(zhuǎn)換為壓縮表空間  SQL alter tablespace sms default compress;
SQL alter tablespace sms default nocompress;

2.3  確定是否已經(jīng)利用 COMPRESS 對一個表空間進行了定義,可查詢 USER_TABLESPACES 數(shù)據(jù)字典視圖并查看 DEF_TAB_COMPRESSION 列

SQL select tablespace_name,def_tab_compression from user_tablespaces;

TABLESPACE DEF_TAB_

———- ——–

USERS DISABLED

TEST DISABLED

UNDOTBS01 DISABLED

STATPACK DISABLED

3. 向一個壓縮的表中加載數(shù)據(jù)

注: 當像上面那樣指定 compress 時, 其它表中 (表空間) 的數(shù)據(jù)并沒有壓縮, 它只是修改了數(shù)據(jù)字典的設置; 只有在向一個表中加裁 / 插入數(shù)據(jù)時, 才會壓縮數(shù)據(jù).

只有在使用下面 4 種方法時, 表中的數(shù)據(jù)才會被壓縮存放:

直接路徑的  sql*load

帶有 /*+ append*/ 的  insert 語句

create table .. as select..

并行 insert

4. 壓縮一個已經(jīng)存在但并未壓縮的表

使用 alter table .. move compress 使一個已存在但未壓縮的表轉(zhuǎn)換為壓縮表.

SQL alter table tmp_test move compress;

同樣, 也可以使用 alter table.. move nocompress 來解壓一個已經(jīng)壓縮的表:

SQL alter table tmp_test move nocompress;

5. 壓縮一個物化視圖

使用用于壓縮表的類似方式來壓縮物化視圖。

基于多個表的聯(lián)接生成的物化視圖通常很適于壓縮,因為它們通常擁有大量的重復數(shù)據(jù)項。

SQL create materialized view mv_tmp_test

compress

as

select a.phone,b.create_time from tmp_test a,recv_stat b

where a.id=b.id;

可以使用 ALTER MATERIALIZED VIEW 命令來改變一個物化視圖的壓縮屬性。

當你使用此命令時,請注意通常是在下一次刷新該物化視圖時才會進行實際的壓縮。

SQL alter materialized view mv_temp_test compress;

6. 壓縮一個已分區(qū)的表

在對已分區(qū)的表應用壓縮時,可以有很多種選擇。你可以在表級別上應用壓縮,也可以在分區(qū)級別上應用壓縮。

你可以利用 ALTER TABLE …MOVE PARTITION 命令對此分區(qū)進行壓縮

SQL alter table tmp_test move partition create_200606 compress;

要找出一個表中的哪些分區(qū)被壓縮了,可以查詢數(shù)據(jù)字典視圖 USER_TAB_PARTITIONS

SQL SELECT TABLE_NAME, PARTITION_NAME,COMPRESSION FROM USER_TAB_PARTITIONS;

7. 壓縮表的性能開銷

一個壓縮的表可以存儲在更少的數(shù)據(jù)塊中,從而節(jié)省了儲存空間,而使用更少的數(shù)據(jù)塊也意味著性能的提高。  在一個 I / O 受到一定限制的環(huán)境中對一個壓縮的表進行查詢通常可以更快速地完成,因為他們需要閱讀的數(shù)據(jù)庫數(shù)據(jù)塊要少得多。

使用 sql*load 加載 100 萬數(shù)據(jù):

表名

 

行數(shù)

 

路徑

 

是否是壓縮的

 

消耗的時間

 

test_nocom

 

1000000

 

直接

 

非壓縮的

 

00:00:21.12

 

test_comp

 

1000000

 

直接

 

壓縮的

 

00:00:47.77

 

由此可以看出, 向壓縮表中加入數(shù)據(jù)的時間是正常表的一倍. 加載壓縮的表所需要的額外時間來自于在數(shù)據(jù)加載過程中所執(zhí)行的壓縮操作。

可以得出的結論是: 在很少改變的表上使用壓縮技術還是可以的. 表中數(shù)據(jù)經(jīng)常變動的情況下, 盡量不要使用表壓縮, 它影響插入操作.

感謝各位的閱讀!關于“oracle 如何實現(xiàn)壓縮表”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-07-20發(fā)表,共計2883字。
轉(zhuǎn)載說明:除特殊說明外本站除技術相關以外文章皆由網(wǎng)絡搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 剑川县| 芷江| 蒙阴县| 云龙县| 新巴尔虎右旗| 洞头县| 昌图县| 曲沃县| 连州市| 建湖县| 宁城县| 吉木乃县| 金平| 含山县| 保定市| 阿坝县| 陵川县| 榆林市| 安阳县| 墨江| 德安县| 明星| 辉南县| 桂东县| 包头市| 新沂市| 龙门县| 麻江县| 台北县| 志丹县| 平罗县| 托里县| 巴中市| 上饶市| 玉山县| 搜索| 治县。| 无棣县| 宜城市| 舞钢市| 东乡族自治县|