Oracle
十余年的東安網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整東安建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“東安網(wǎng)站設(shè)計”,“東安網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
中壓縮數(shù)據(jù)節(jié)省空間和提高速度
添加時間
:2007-4-22
使用表壓縮來節(jié)省空間并提高查詢性能
很多決策支持系統(tǒng)通常都涉及到存儲于幾個特大表中的大量數(shù)據(jù)。隨著這些系統(tǒng)的發(fā)展,對磁盤空間
的需求也在快速增長。在當(dāng)今的環(huán)境下,存儲著數(shù)百
TB
(太字節(jié))的數(shù)據(jù)倉庫已經(jīng)變得越來越普遍。
為了幫助處理磁盤容量問題,
在
Oracle9i
第
2
版中引入了表壓縮特性,
它可以極大地減少數(shù)據(jù)庫表所
需要的磁盤空間數(shù)量,并在某些情況下提高查詢性能。
在本文中,我將向你說明表壓縮是如何工作的,以及在構(gòu)建和管理數(shù)據(jù)庫時如何配置表空間。我還將
基于一些示例測試結(jié)構(gòu)討論一些性能問題,以幫助你了解使用表壓縮預(yù)計能獲得多大好處。
表壓縮是如何工作的
在
Orcle9i
第
2
版中,表壓縮特性通過刪除在數(shù)據(jù)庫表中發(fā)現(xiàn)的重復(fù)數(shù)據(jù)值來節(jié)省空間。壓縮是在數(shù)
據(jù)庫的數(shù)據(jù)塊級別上進行的。當(dāng)確定一個表要被壓縮后,數(shù)據(jù)庫便在每一個數(shù)據(jù)庫數(shù)據(jù)塊中保留空間,以
便儲存在該數(shù)據(jù)塊中的多個位置上出現(xiàn)的數(shù)據(jù)的單一拷貝。這一被保留的空間被稱作符號表(
symbol
table
)
。被標(biāo)識為要進行壓縮的數(shù)據(jù)只存儲在該符號表中,而不是在數(shù)據(jù)庫行本身內(nèi)。當(dāng)在一個數(shù)據(jù)庫行
中出現(xiàn)被標(biāo)識為要壓縮的數(shù)據(jù)時,該行在該符號表中存儲一個指向相關(guān)數(shù)據(jù)的指針,而不是數(shù)據(jù)本身。節(jié)
約空間是通過刪除表中數(shù)據(jù)值的冗余拷貝而實現(xiàn)的。
對于用戶或應(yīng)用程序開發(fā)人員來說,表壓縮的效果是透明的。無論表是否被壓縮,開發(fā)人員訪問表的
方式都是相同的,
所以當(dāng)你決定壓縮一個表時,
不需要修改
SQL
查詢。
表壓縮的設(shè)置通常由數(shù)據(jù)庫管理人
員或設(shè)計人員進行配置,幾乎不需要開發(fā)人員或用戶參與。
如何創(chuàng)建一個壓縮的表
要創(chuàng)建一個壓縮的表,可在
CREATE TABLE
語句中使用
COMPRESS
關(guān)鍵字。
COMPRESS
關(guān)鍵字
指示
Oracle
數(shù)據(jù)庫盡可能以壓縮的格式存儲該表中的行。
下面是
CREATE TABLE COMPRESS
語句的一
個實例:
CREATE
TABLE
SALES_HISTORY_COMP
(
PART_ID
VARCHAR2(50)
NOT
NULL,
STORE_ID
VARCHAR2(50) NOT NULL,
SALE_DATE
DATE NOT NULL,
QUANTITY
NUMBER(10,2) NOT NULL
)
COMPRESS
;
或者,你可以用
ALTER TABLE
語句來修改已有表的壓縮屬性,如下所示:
ALTER TABLE SALES_HISTORY_COMP COMPRESS;
為了確定是否已經(jīng)利用
COMPRESS
對一個表進行了定義,可查詢
USER_TABLES
數(shù)據(jù)字典視圖并
查看
COMPRESSION
列,如下面的例子所示:
SELECT TABLE_NAME, COMPRESSION FROM USER_TABLES;
TABLE_NAME
COMPRESSION
------------------
-----------
SALES_HISTORY
DISABLED
SALES_HISTORY_COMP
ENABLED
Create table me(shengao int32,tizhong
int ,zhangxiang verchar2(60)) compress;
Select table_name, compression from user_tables;
Select tablespace_name,def_tab_compression from user_tablespaces;
也可以在表空間級別上定義
COMPRESS
屬性,
既可以在生成時利用
CREATE TABLESPACE
來定義,
也可以稍后時間利用
ALTER TABLESPACE
來定義。與其他存儲參數(shù)類似,
COMPRESS
屬性也具有一些
繼承特性。當(dāng)在一個表空間中創(chuàng)建一個表時,它從該表空間繼承
COMPRESS
屬性。為了確定是否已經(jīng)利
用
COMPRESS
對一個表空間進行了定義,可查詢
USER_TABLESPACES
數(shù)據(jù)字典視圖并查看
DEF_TAB_COMPRESSION
列,如下面的例子所示:
SELECT
TABLESPACE_NAME,
DEF_TAB_COMPRESSION
FROM
DBA_TABLESPACES;
TABLESPACE_NAME
DEF_TAB_COMPRESSION
---------------
-------------------
DATA_TS_01
DISABLED
INDEX_TS_01
DISABLED
正如你所預(yù)計的那樣,你可以在一個表空間直接壓縮或解壓縮一個表,而不用考慮表空間級別上的
COMPRESS
屬性
刪除數(shù)據(jù)不能縮小表空間,只是可再利用的多了.
要實際縮小,讓操作系統(tǒng)可以利用,需要先把表move tablespace
也可以在原來的tablespace上move一遍,再縮小tablespace就可以了.
例如:
alter table your_table move tablespace yourtablespace;
隨著數(shù)據(jù)量的不斷海量 CPU的不斷強勁 雙核四核的叫個不停 一種叫做時間換空間的優(yōu)化技術(shù)應(yīng)該會越來越流行 所以 數(shù)據(jù)壓縮對于今后的數(shù)據(jù)庫來說 應(yīng)該會從核武器變成常規(guī)武器 Oracle從 i開始羞羞答答的引入表級壓縮 一直以來都是像中國的核電站一樣 宣傳的用處大 論實際的貢獻就不怎么樣了
Oracle g似乎是正兒八經(jīng)的要推廣數(shù)據(jù)壓縮技術(shù)了 專門推出了一個叫做Advance Compression的組件 全面支持普通表壓縮 非結(jié)構(gòu)化數(shù)據(jù)壓縮(SecureFile數(shù)據(jù)壓縮) Data Pump數(shù)據(jù)壓縮 以及RMAN備份壓縮 數(shù)據(jù)壓縮技術(shù)從此名正言順的登上歷史舞臺 既然是專門做為一個Option推出 Oracle一定是對該特性相當(dāng)有信心 所以需要單獨為該特性購買License
在Oracle i中雖然引入了表壓縮 但是有很大的限制 只能對批量裝載操作(比如直接路徑裝載 CTAS等)涉及的數(shù)據(jù)進行壓縮 普通的DML操作的數(shù)據(jù)是無法壓縮的 這應(yīng)該是對于寫操作的壓縮難題沒有解決 一直遺留到Oracle g 總算是解決了關(guān)系數(shù)據(jù)壓縮的寫性能問題 Oracle的表壓縮是針對Block級別的數(shù)據(jù)壓縮 主要技術(shù)和Oracle i差不多 還是在Block中引入symbol表 將block中的重復(fù)數(shù)據(jù)在symbol中用一個項表示 Oracle會對block進行批量壓縮 而不是每次在block中寫入數(shù)據(jù)時都進行壓縮 通過這種方式 可以盡量降低數(shù)據(jù)壓縮對于DML操作的性能影響 這樣 在block級別應(yīng)該會引入一個新的參數(shù) 用于控制block中未壓縮的數(shù)據(jù)量達到某個標(biāo)準(zhǔn)以后進行壓縮操作
SecureFile也是Oracle g新推出的一項特性 用于存儲非結(jié)構(gòu)化數(shù)據(jù) SecureFile也將支持數(shù)據(jù)壓縮操作 這樣對于傳統(tǒng)的LOB字段也可以進行壓縮 將極大的減少大型數(shù)據(jù)庫的存儲空間需求 當(dāng)然 有得比有失 壓縮和解壓時 對于CPU的要求也將更高 但是 目前CPU的發(fā)展速度明顯比IO和存儲空間快速的情況下 壓縮是大有可為的技術(shù) 通過在壓縮率和壓縮效率方面的不斷提升 以后應(yīng)該為成為各個數(shù)據(jù)庫的標(biāo)準(zhǔn)配置
除了對數(shù)據(jù)庫中的數(shù)據(jù)進行壓縮 Advance Compression Option還將支持備份數(shù)據(jù)的壓縮 做為邏輯備份的Data Pump和物理備份的RMAN工具 都將支持該技術(shù) 在Oracle gR 中 Data Pump已經(jīng)開始支持壓縮源數(shù)據(jù) Oracle g中則可以直接壓縮導(dǎo)出文件 這樣導(dǎo)出的時候就可以極大的減少存儲空間的需求 在以前版本中 利用WinRAR等 經(jīng)??梢詫讉€G的導(dǎo)出文件壓縮到幾十M Oracle g的白皮書上說壓縮率可以達到 % 等軟件出來 大家可以好好的測試一把 同樣的 Oracle也在 g中開始引入RMAN的壓縮技術(shù) 但是Oracle g號稱采用了更先進的ZLIB要所算法 可以比Oracle g的壓縮算法快上 % 空間需求也將減少 %
除了上述的數(shù)據(jù)壓縮技術(shù) Oracle g Advanced Compression Option還將引入另外一種壓縮技術(shù) 我們知道在Data Guard中 需要將日志從主庫傳遞到備庫 如果主庫的事務(wù)很多 則單位時間內(nèi)需要傳遞的日志量將相當(dāng)可觀 如果能將這些日志壓縮后在傳遞 然后在備庫解壓后應(yīng)用 將極大的減少對于網(wǎng)絡(luò)帶寬的需求 從而已減少主備庫的時間差
另外 Oracle的bitmap一直就是壓縮存儲的 g中的bitmap對于 i就有比較大的改動 通過一些細節(jié)的完善 提供更好的性能和更高的穩(wěn)定性 也是oracle一貫的風(fēng)格 對于bitmap在Oracle g中將如何實現(xiàn) 也將是非常值得關(guān)注的一個特點
lishixinzhi/Article/program/Oracle/201311/16929
有2種方法:
1.將你22G的表空間的DBF數(shù)據(jù)文件縮小,這樣表空間就自然變小了
2. 將這個22G的表空間中得文件移到別的表空間里,然后刪除表空間重新建立,最后再講移出的表移回來,這樣也能縮小表空間
alter table 表名 move和alter table 表名 shrink space都可以用來進行段收縮,降低高水位HWM,
也都可以用來消除行鏈接(Row Chaining)和行遷移(Row Migration),估計效果不明顯,看你的數(shù)據(jù)庫用途是干什么的(如果是數(shù)據(jù)倉庫肯定是不明顯的)。
文章題目:oracle如何將表壓縮 oracle表壓縮優(yōu)缺點
地址分享:http://chinadenli.net/article24/hgdhje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站營銷、微信公眾號、外貿(mào)網(wǎng)站建設(shè)、用戶體驗、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)