ITPub博客

首页 > 数据库 > Oracle > Oracle 的表压缩

Oracle 的表压缩

翻译 Oracle 作者:kakaxi9521 时间:2021-05-12 14:49:50 0 删除 编辑

Table compression was introduced in Oracle 9i as a space saving feature for data warehousing projects. In 11g it is now considered a mainstream feature that is acceptable for OLTP databases. In addition to saving storage space, compression can result in increased I/O performance and reduced memory use in the buffer cache. These advantages do come at a cost, since compression incurs a CPU overhead, so it won't be of benefit to everyone.


Oracle 表压缩有表空间级别、 表或分区级别:

  • NOCOMPRESS - 表和分区不进行压缩。 在不进行任何指定情况下默认建表不会进行压缩。

  • COMPRESS - 这个选项适用于数据仓库系统。 表或分区在进行direct-path 插入时会进行压缩。

  • COMPRESS FOR DIRECT_LOAD OPERATIONS - 这个和COMPRESS 的功能一样。

  • COMPRESS FOR ALL OPERATIONS - 这个选项使用于OLTP 系统。 这个选项会为所有的操作进行压缩,包括常规的DML操作。此选项要11.1.0 或更高版本。 在11gR2 中此选项重命名为COMPRESS FOR OLTP。


Table 级别和Partition级别的压缩示例:

-- Table compression.

create table test_tab_1(

id                   number(10)   not null,

description    varchar2(50)  not null,

create_date   date               not null

)

compress for all operations;


--Partition level compression.

create table test_tab_2(

id                  number(10)   not null,

description   varchar2(50)  not null,

create_date   date              not null

)

partition by range (create_date)(

   partition test_tab_q1 values less than (to_date('01/01/2018','DD/MM/YYYY')) compress,

   partition test_tab_q2 values less than (to_date('01/04/2018','DD/MM/YYYY')) COMPRESS FOR DIRECT_LOAD OPERATIONS,

   partition test_tab_q3 values less than (to_date('01/07/2018','DD/MM/YYYY')) compress for all operations,

   partition test_tab_q4 values less than (maxvalue) nocompress

   );


表级别的压缩可以通过[DBA|ALL|USER]_TABLES 视图去查询,对于分区表不会有显示是否进行了压缩。

select table_name,compression,compress_for from user_tables;


分区级别的压缩可以通过[DBA|ALL|USER]_TAB_PARTITIONS 查看。

select table_name,partition_name,compression,compress_for from user_tab_partitions;


对于表和分区的压缩设置可以通过alter table 命令去修改。 这种改变对现有的数据无影响,仅对新的操作有效。

alter table test_tab_1 nocompress;

alter table test_tab_2 modify partition test_tab_q4 compress for all operations;


表压缩的限制:

The restrictions associated with table compression include:

  • Compressed tables can only have columns added or dropped if the  COMPRESS FOR ALL OPERATIONS option was used.
  • Compressed tables must not have more than 255 columns.
  • Compression is not applied to lob segments.
  • Table compression is only valid for heap organized tables, not index organized tables.
  • The compression clause cannot be applied to hash or hash-list partitions. Instead, they must inherit their compression settings from the tablespace, table or partition settings.
  • Table compression cannot be specified for external or clustered tables.

参考链接:

https://oracle-base.com/articles/11g/table-compression-enhancements-11gr1#:~:text=Table%20compression%20was%20introduced%20in%20Oracle%209i%20as,and%20reduced%20memory%20use%20in%20the%20buffer%20cache.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21374452/viewspace-2771947/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Kubernetes Namespaces
请登录后发表评论 登录
全部评论

注册时间:2009-04-13

  • 博文量
    136
  • 访问量
    179046