您好,登錄后才能下訂單哦!
通常我們可以使用 COMPRESS子句或COMPRESS BASIC子句來啟用表的基本壓縮特性(COMPRESS子句和COMPRESS BASIC子句的作用是相同的),從性能的角度來說,使用基本壓縮的主要優勢在于,如果數據壓縮后再加載,接下來的任何 I/O操作都會使用更少的資源,因為在讀寫數據時需要訪問更少的數據塊。一般來說,存儲大量字符數據的表適合使用基本壓縮。Oracle的基本壓縮屬性對于正常的DML語句,例如INSERT、UPDATE、MERGE和DELETE沒有影響。如果你希望對所有DML語句起作用,那么就要考慮使用OLTP壓縮。COMPRESS FOR OLTP子句為所有DML操作啟用壓縮。OLTP壓縮并不會在數據插入或修改時馬上壓縮,而是在數據塊中的修改達到一定閾值時,成批次來進行壓縮。當達到閾值時,所有未壓縮的數據行將會同時進行壓縮。需要進行壓縮的閾值由一種內部算法(你并不能控制)決定。
同樣也能夠在分區和表空間級別上指定基本壓縮。位于使用COMPRESS子句創建的表空間中的所有表,默認都會啟用基本壓縮。
可以查詢相應的DBA/ALL/USER_TABLES視圖的compression來驗證是否對一張表啟用了壓縮。查詢dba_tablespace視圖中的tab_compression和compress_for列檢查表空間是否啟用了壓縮。
創建壓縮表:
create table regs (reg_id number,reg_name varchar2(2000))compress;
create table regs (reg_id number,reg_name varchar2(2000))compress for oltp;
壓縮表(之后的數據啟用):
SQL> alter table regs_dss compress;
SQL> alter table regs compress for oltp;
壓縮表中已有數據:
SQL> alter table regs_dss move compress;
SQL> alter table regs_dss move compress for oltp;
解壓縮:
SQL> alter table regs_dss nocompress;
SQL> alter table regs_dss nocompress for oltp;
解壓縮表中已有數據:
SQL> alter table regs_dss move nocompress;
SQL> alter table regs_dss move nocompress for oltp;
創建壓縮表空間
CREATE TABLESPACE comp_data
DATAFILE 1/oraOl/dbf Ile/0liR2/comp_dataOl.dbf'
SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 512K
SEGMENT SPACE MANAGEMENT AUTO
DEFAULT COMPRESS;/ DEFAULT COMPRESS for oltp;
修改已有的表空間,設置其默認的壓縮度:
SQL> alter tablespace comp_data default compress;
1) 創建測試表并插入數據
SQL> CREATE TABLE t (ID NUMBER,addtime DATE,mark varchar2(10) default null);
SQL> BEGIN
FOR i IN 1 .. 60000
LOOP
INSERT INTO t(id,addtime)
VALUES (i, sysdate);
COMMIT;
---DBMS_LOCK.sleep (0.1);
END LOOP;
END;
/
2) 查看對象大小
SQL> select segment_name, bytes/1024/1024 from dba_segments where owner='ADMIN';
SEGMENT_NAME BYTES/1024/1024
------------------------- ---------------
CHAINED_ROWS .0625
T 5.8125
3) 使用表壓縮功能創建
SQL> create table t_com compress as select * from t;
SQL> select segment_name, bytes/1024/1024 from dba_segments where owner='ADMIN';
SEGMENT_NAME BYTES/1024/1024
------------------------- ---------------
T_COM 3
CHAINED_ROWS .0625
T 5.8125
t_com啟用壓縮后比t小了將近一半的數據量。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。