文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Oracle表的压缩是怎样的

2024-04-02 19:55

关注

本篇文章为大家展示了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表的压缩是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯