亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么理解Oracle表壓縮

發布時間:2021-11-11 11:48:59 來源:億速云 閱讀:211 作者:iii 欄目:關系型數據庫

本篇內容介紹了“怎么理解Oracle表壓縮”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1、官方文檔說法: 

As your database grows in size, consider using table compression. Compression saves disk space, reduces memory use in the database buffer cache, and can significantly speed query execution during reads. Compression has a cost in CPU overhead for data loading and DML. However, this cost might be offset by reduced I/O requirements

隨著數據庫不斷增長,可以考慮使用表壓縮。壓縮可以節省磁盤空間,減少數據庫buffer cache內存使用,并且可以加速查詢。 

壓縮對于數據裝載和DML操作有一定的CPU消耗。然而,這些消耗可以為I/O的減少而抵消。

表的壓縮對于應用程序來說是完全透明的,對于決策支持系統(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開銷,因此這種壓縮技術適用于更新不頻繁的數據。

二、基本壓縮特點: 

1)使用基本壓縮,只有當數據是直接路徑插入或更新記錄(direct-path insert and updated )時才會發生壓縮。 

并且支持有線的數據類型和SQL操作。

二、如何啟用基本壓縮? 

1)通過create table語句中指定compress條件。 

2)通過alter table .. compress; 來給現有表啟用壓縮; 

3)通過alter table .. nocompress; 來禁用表壓縮

三、在壓縮表上添加和刪除列

在壓縮表上添加和刪除列有如下限制:

1、對于compression basic類型的壓縮,不能對新添加的列指定默認值

--測試過程:

TEST@ r7>select * from empd1;
no rows selected
TEST@ r7>select table_name,compression,compress_for from user_tables where table_name='EMPD1';
TABLE_NAME                     COMPRESS COMPRESS_FOR
------------------------------ -------- ------------
EMPD1                          DISABLED
TEST@ r7>INSERT INTO EMPD1 SELECT * FROM SCOTT.EMP WHERE ROWNUM<10;
9 rows created.
TEST@ r7>COMMIT;
Commit complete.
TEST@ r7>alter table empd1 compress basic;
Table altered.
TEST@ r7>select table_name,compression,compress_for from user_tables;
TABLE_NAME                     COMPRESS COMPRESS_FOR
------------------------------ -------- ------------
TBUSINFLAG                     ENABLED  OLTP
TCOMBI                         ENABLED  OLTP
TCURRENTS                      ENABLED  OLTP
TENTRUSTDIRECTION              ENABLED  OLTP
TINSTRUCTION                   ENABLED  OLTP
TINSTRUCTIONSTOCK              ENABLED  OLTP
TOPERATOR                      ENABLED  OLTP
TOUTCONFIRM                    ENABLED  OLTP
TREALDEAL                      ENABLED  OLTP
TSTOCKINFO                     ENABLED  OLTP
TUNITSTOCK                     ENABLED  OLTP
CUSTOMERS                      ENABLED  OLTP
SYS_EXPORT_FULL_01             ENABLED  OLTP
A                              ENABLED  OLTP
B                              ENABLED  OLTP
EMPD1                          ENABLED  BASIC
16 rows selected.
TEST@ r7>desc empd1;
 Name                    Null?    Type
 ----------------- -------- -------------
 EMPNO                      NUMBER(4)
 ENAME                      VARCHAR2(10)
 JOB                        VARCHAR2(9)
 MGR                        NUMBER(4)
 HIREDATE                   DATE
 SAL                        NUMBER(7,2)
 COMM                       NUMBER(7,2)
 DEPTNO                     NUMBER(2)
--添加有默認值的字段:不支持
TEST@ r7>alter table empd1 add (test varchar(10) default 'sysdate');
alter table empd1 add (test varchar(10) default 'sysdate')
                       *
ERROR at line 1:
ORA-39726: unsupported add/drop column operation on compressed tables
--添加沒有默認值得字段:支持
TEST@ r7>alter table empd1 add (test varchar(10));
Table altered.
--對于compression basic類型的壓縮,不支持列的刪除操作
TEST@ r7>alter table empd1 drop column test;
alter table empd1 drop column test
                              *
ERROR at line 1:
ORA-39726: unsupported add/drop column operation on compressed tables

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. */

對于這一點,做個測試。對于OLTP類型的壓縮,該列為空也可以被添加。

TEST@ r7>alter table empd1 add (test1 varchar(10) default 'sysdate');
Table altered.

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

TEST@ r7>alter table empd1 drop column test;
Table altered.
SQL> ALTER TABLE EMPD1 DROP UNUSED COLUMNS;     --刪除unused字段

“怎么理解Oracle表壓縮”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節
推薦閱讀:
  1. 壓縮表
  2. oracle 11G表壓縮

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

AI

新郑市| 靖远县| 纳雍县| 富锦市| 宁乡县| 万年县| 文昌市| 平利县| 崇文区| 大城县| 图木舒克市| 乃东县| 孝感市| 仁化县| 垣曲县| 深圳市| 河曲县| 麻江县| 吉安市| 黑水县| 龙南县| 宕昌县| 集贤县| 莎车县| 井冈山市| 清涧县| 天长市| 钟山县| 三江| 庆安县| 孝义市| 阿尔山市| 荣成市| 海南省| 扶沟县| 襄樊市| 宿州市| 白山市| 神池县| 吉隆县| 湘阴县|