广告
返回顶部
首页 > 资讯 > 数据库 >Oracle表的压缩是怎样的
  • 591
分享到

Oracle表的压缩是怎样的

2024-04-02 19:04:59 591人浏览 八月长安
摘要

本篇文章为大家展示了oracle表的压缩是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 随着数据库的增长,我们可以考虑使用or

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

您可能感兴趣的文档:

--结束END--

本文标题: Oracle表的压缩是怎样的

本文链接: https://www.lsjlt.com/news/65462.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle表的压缩是怎样的
    本篇文章为大家展示了Oracle表的压缩是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 随着数据库的增长,我们可以考虑使用or...
    99+
    2022-10-19
  • 怎么理解Oracle表压缩
    本篇内容介绍了“怎么理解Oracle表压缩”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、官方文档说法:...
    99+
    2022-10-19
  • Javascript代码是怎样被压缩的
    Javascript代码是怎样被压缩的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。随着前端的发展,特别是 React,Vue 等构造单页...
    99+
    2022-10-19
  • Linux压缩文件格式是怎样的
    这期内容当中小编将会给大家带来有关Linux压缩文件格式总结是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说...
    99+
    2023-06-13
  • Innodb 表的压缩方式
    innodb 目前支持两种文件格式(innodb_file_format) Antelope 和Barracuda 5.6 默认的是 Antelope  (羚羊) ,有两种“数据表格式...
    99+
    2022-10-18
  • MySQL 5.6的表如何压缩
    MySQL 5.6的表如何压缩,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。设置mysql innodb 表的压缩:第一,my...
    99+
    2022-10-18
  • Hadoop中的压缩与解压缩方法是什么
    这篇文章主要介绍“Hadoop中的压缩与解压缩方法是什么”,在日常操作中,相信很多人在Hadoop中的压缩与解压缩方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hadoop中的压缩与解压缩方法是什么...
    99+
    2023-06-21
  • Redis的压缩列表怎么节约内存
    Redis压缩列表节约内存的示例:压缩列表的构成,代码://返回整个压缩列表的总字节#define ZIPLIST_BYTES(zl) (*((uint32_t*)(zl)))//返回压缩列表的tail_offset变量...
    99+
    2022-10-24
  • oracle数据库的七个压缩包
    Oracle11g有多张安装光盘: 文件名称                      ...
    99+
    2022-10-18
  • MySQL5.5的压缩表对应的新特性
    这篇文章主要介绍“MySQL5.5的压缩表对应的新特性”,在日常操作中,相信很多人在MySQL5.5的压缩表对应的新特性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQ...
    99+
    2022-10-18
  • python如何实现列表以及迭代器的压缩和解压缩
    这篇文章主要介绍了python如何实现列表以及迭代器的压缩和解压缩,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。列表以及迭代器的压缩和解压缩...
    99+
    2022-10-19
  • Redis压缩列表的示例分析
    这篇文章主要介绍了Redis压缩列表的示例分析,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。此篇文章是主要介绍Redis在数据存储方面的其中一种...
    99+
    2022-10-18
  • MS SQL SERVER 数据库日志压缩方法与代码是怎样的
    MS SQL SERVER 数据库日志压缩方法与代码是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。MSSQL性能是很不错的,但是数据库...
    99+
    2022-10-19
  • Redis ziplist 压缩列表的源码解析
    目录前言源码解读ziplist 布局entry 节点prelenencoding 编码总结前言 相信对使用过 Redis 的人来说,数据类型 List 是不会陌生的吧。大多数人需要实现一个队列时候,首选的就是 List ...
    99+
    2022-06-30
    Redis ziplist 压缩列表 Redis 压缩列表 Redis ziplist
  • css压缩的作用是什么
    小编给大家分享一下css压缩的作用是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!css压缩的作用:1、减小了文件的体积;2、减小了网络传输量和带宽占用;3、...
    99+
    2023-06-15
  • Oracle ERP的完全词汇表是怎么样的
    这篇文章给大家介绍Oracle ERP的完全词汇表是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Oracle ERP的完全词汇表Aaccount hierarchy(帐户分层结构)Oracle 财务系统的一种...
    99+
    2023-06-06
  • 扩展ORACLE表空间操作是怎样的
    本篇文章给大家分享的是有关扩展ORACLE表空间操作是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1、问...
    99+
    2022-10-19
  • oracle表碎片以及整理是怎样的
    oracle表碎片以及整理是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  确...
    99+
    2022-10-19
  • Mac上的压缩解压工具Keka怎么用
    Mac上的压缩解压工具Keka怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。简单而强大你甚至无需打开 Keka 来压缩文件,只需将其保存到 Dock 中,...
    99+
    2023-06-02
  • Python文件的压缩与解压方法是什么
    本篇内容介绍了“Python文件的压缩与解压方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:Python在人工智能,后台服务等...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作