如何壓縮oracle海量資料

來源:互聯網
上載者:User

“資料壓縮”以前對我來說還是比較新鮮的詞,並不是沒有聽說過,而是沒有實際使用過,之前一直做專案經理工作上也設計到資料庫的營運,但由於儲存設計的比較充裕,在加上效能運轉的還能讓客戶接受,所以壓縮技術基本上沒怎麼用,當時也怕對DML操作有負面影響!之所以現在要實驗這方面的技術,也是因為二期我們的資料量暴增,對機器對效能對營運都用一定的壓力和衝擊,這也說明了這門技術是在特定環境、特定場合下來使用的,下面我們來詳細講一講如何去使用這門技術---海量資料之利器“壓縮compress”

一、應用場合

答:正如上面所說,壓縮技術一般應用在“海量資料”的範疇,在大資料量下並且重複率高的情境下應該的效果才好,適合於OLAP(報表系統)不適合OLTP(線上交易系統),當資料量小時作用還不是很大,只要資料量達到一定程度的時候使用這門技術才有意義。

二、壓縮技術的好處

1.節約空間:我認為壓縮技術的最大好處就是節約空間,在存放裝置空間很緊張的情況下更需要使用壓縮技術來緩解

2.減少memory/IO開銷:當使用了壓縮技術後,同等記錄對應的資料區塊相對較少,自然而然IO開銷就小了

3.提高資料處理效率:原本10個資料區塊的,經過壓縮後變成5個資料區塊,但還是那些資料,可效率提高了一倍。

三、壓縮原理

答:我們都用過rar壓縮zip壓縮,其實這些壓縮的原理都很相似,當然在細微處理上有不同,資料區塊壓縮原理上是使用長度較短符號來代替列中的每個值,由於符號佔用空間小於實際值,從而達到節約空間的效果,當列中重複值越多壓縮效果越好。

四、資料壓縮不適合OLTP系統

1.OLTP是一種多事務短時間片系統,有大量的DML操作,而DML操作我們都知道是有鎖lock的(insert  update  delete)當資料區塊中記錄數多起來時,導致訪問這個資料區塊的使用者就多,就是產生爭用和等待,從而降低了效率。

2.資料插入、更新和索引索引值更新時,都要先解壓縮再更新,等待的時間會更長。

五、分區表的壓縮

1.分區表的每個分區都可以獨立壓縮

2.有些時候,分區表在建立時不設定分區壓縮屬性,當某個分區需要壓縮時,再獨立進行壓縮

3.如果在表級設定壓縮屬性的話,那麼所有分區都會啟動壓縮功能,反正如果是某幾個分區獨立壓縮,表級屬性上什麼也不寫的。

實驗

create table leo_partition1 (object_id,object_name)       建立一個六個分區的分區表,沒有指定壓縮

partition by range (object_id)

(

partition leo_p1 values less than (1000),

partition leo_p2 values less than (2000),

partition leo_p3 values less than (3000),

partition leo_p4 values less than (4000),

partition leo_p5 values less than (5000),

partition leo_max values less than (maxvalue)

)

as select object_id,object_name from dba_objects;

LS@LEO> select count(*) from leo_partition1;

 COUNT(*)

----------

10351

LS@LEO> select partition_name,compression from user_tab_partitions where table_name='LEO_PARTITION1';

PARTITION_NAME                 COMPRESS

------------------------------ --------

LEO_MAX                        DISABLED

LEO_P1                         DISABLED

LEO_P2                         DISABLED

LEO_P3                         DISABLED

LEO_P4                         DISABLED

LEO_P5                         DISABLED

LS@LEO> alter table leo_partition1 compress;                            例如 定義表級壓縮屬性,此時所有分區都壓縮

LS@LEO> alter table leo_partition1 modify partition leo_p1 compress;    我們測試准對leo_p1 和 leo_p5分區進行壓縮,來說明分區可以獨立壓縮

Table altered.

LS@LEO> alter table leo_partition1 modify partition leo_p5 compress;

Table altered.

LS@LEO> select partition_name,compression from user_tab_partitions where table_name='LEO_PARTITION1';

PARTITION_NAME                 COMPRESS

------------------------------ -----------------------

LEO_MAX                       DISABLED

LEO_P1                         ENABLED

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.