91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle表的壓縮是怎樣的

發布時間:2021-11-12 09:18:57 來源:億速云 閱讀:576 作者:柒染 欄目:關系型數據庫

本篇文章為大家展示了Oracle表的壓縮是怎樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

隨著數據庫的增長,我們可以考慮使用oracle的表壓縮技術。表壓縮可以節省磁盤空間、減少data buffer cache的內存使用量、并可以顯著的提升讀取和查詢的速度。當使用壓縮時,在數據導入和DML操作時,將導致更多的CPU開銷,然而,由于啟用壓縮而減少的I/O需求將抵消CPU的開銷而產生的成本。

表的壓縮對于應用程序來說是完全透明的,對于決策支持系統(DSS)、聯機事務處理系統(OLTP)、歸檔系統(Archive Systems)來說表的壓縮是有益處的。我們可以壓縮表空間,表和分區。如果壓縮表空間,那么在默認的情況下,表空間上創建的所有表都將被壓縮。只有在表執行插入、更新或批量數據載入時,才會執行數據的壓縮操作。

一、表壓縮的方法
Oracle提供了一下幾種類型的表壓縮方法:
1、Basic Compression:壓縮等級High,CPU開銷較小
2、OLTP Compression:壓縮等級High,CPU開銷較小
3、Warehouse Compression:壓縮等級Higher,CPU開銷較大(取決于壓縮參數是Low還是High)
4、Archive Compression:壓縮等級Highest,CPU開銷很大(取決于壓縮參數是Low還是High)

當使用Basic Compression,warehouse Compression,Archive Compression類型的壓縮時,盡在發生批量數據導入時才會執行壓縮。OLTP Compression被用于聯機事務處理系統,可以對任意的SQL操作執行數據壓縮。Warehouse Compression和Archive Compression可以獲得很高的壓縮等級,因為它們采用了Hybrid Columnar(混合列)壓縮技術,Hybrid Columnar采用一種改良的列的存儲形式替代一行為主的存儲形式。Hybird Columnar技術允許將相同的數據存儲在一起,提高了壓縮算法的效率。當使用混合列壓縮算法時,將導致更多的CPU開銷,因此這種壓縮技術適用于更新不頻繁的數據。

表的壓縮特征:

表壓縮方法 創建和修改表壓縮的語法 直接路徑插入 說明
Basic Compression compression [basic] 直接路徑插入的數據才會被壓縮 compression和compression basic是等價的,未使用直接路徑插入的數據不會被壓縮
OLTP Compression compression for oltp 不要求 使用Insert和Update的數據也將被壓縮
Warehouser Compression compression for query   [Low|High] 直接路徑插入的數據才會被壓縮
CPU開銷高,未采用直接路徑插入的行插入和行更新以行格式存儲,會降低壓縮等級(Low)
Archive Compression compression for archive [Low|High]
直接路徑插入的數據才會被壓縮
CPU開銷高,未采用直接路徑插入的行插入和行更新以行格式存儲,會降低壓縮等級(Low)


之前未壓縮的表可以通過alter table ... compression ... 語句進行壓縮。在這種情況下,壓縮啟用前的記錄不會被壓縮,只有新插入或更新的數據才會進行壓縮。同樣,通過alter table ... nocompression ...語句解除對一個表的壓縮,表內已壓縮的數據還會繼續保持壓縮的狀態,新插入的數據就不再被壓縮。

在warehouse compression模式下,compression for query high是默認的;在archive compression模式下,compression for archive low是默認的。

二、壓縮和分區表
一個表可以有壓縮的分區和未壓縮的分區,不同的分區可以使用不同的壓縮方法。可以采用下列的方法改變分區的壓縮方法:
1、alter table ... modify partition ... compress ... ,該方法僅適用于新插入的數據。
2、alter table ... move partition ... compress ... ,該方法適用于新插入的數據和已存在的數據。

確定表是否被壓縮:
SQL> select table_name,compression,compress_for from user_tables;
TABLE_NAME                     COMPRESS COMPRESS_FOR
------------------------------ -------- ------------
COUNTRIES                      DISABLED BASIC                 //這里比較困惑,既然表沒有啟用壓縮,為什么compress_for里的壓縮方法確實basic呢?
JOBS                           DISABLED
EMPLOYEES                      ENABLED  BASIC
LOCATIONS                      DISABLED
DEPARTMENTS                    DISABLED
JOB_HISTORY                    DISABLED
REGIONS                        DISABLED

三、在壓縮表上添加和刪除列
在壓縮表上添加和刪除列有如下限制:
1、對于compression basic類型的壓縮,不能對新添加的列指定默認值。例如:

SQL> alter table employees compress basic;
Table altered.

SQL> alter table employees add (a varchar(10) default 'AAA');
alter table employees add (a varchar(10) default 'AAA')
                           *
ERROR at line 1:
ORA-39726: unsupported add/drop column operation on compressed tables

SQL> alter table employees add (b number);
Table altered.

2、對于OLTP類型的壓縮,如果為新添加的列指定默認值,則該列必須被設置為 NOT NULL,為可以為空的列添加默認值不被支持。對于這一點,我認為文檔的描述是錯誤的,原文是這樣的:OLTP compression - If a default value is specified for an added column, then the column must be NOT NULL. Added nullable columns with default values are not supported.   下面通過一個實驗來驗證:

SQL> alter table employees compress for oltp;
Table altered.

SQL> alter table employees add (c int default 10);
Table altered.

3、對于compression basic類型的壓縮,不支持列的刪除操作,例如:

SQL> alter table employees compress basic;
Table altered.

SQL> alter table employees drop column c;
alter table employees drop column c
                                  *
ERROR at line 1:
ORA-39726: unsupported add/drop column operation on compressed tables

4、對于OLTP類型的壓縮,能夠支持列的刪除操作,但是在數據庫內部將列標記為unused狀態,避免長時間的解壓和重新壓縮的操作。

SQL> alter table employees compress for oltp;
Table altered.

SQL> alter table employees drop column c;
Table altered

上述內容就是Oracle表的壓縮是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆安县| 吴桥县| 合阳县| 西充县| 阿克陶县| 道孚县| 农安县| 阿尔山市| 分宜县| 周宁县| 长岛县| 潜山县| 靖边县| 东乡县| 会昌县| 康马县| 贺州市| 文山县| 平邑县| 沂南县| 丰原市| 宜阳县| 赞皇县| 五华县| 久治县| 砀山县| 平和县| 蓝山县| 北流市| 海南省| 长岛县| 隆回县| 华坪县| 临高县| 巧家县| 绥江县| 江孜县| 湘乡市| 广州市| 建水县| 扎赉特旗|