### Oracle数据库中的表压缩技术详解 #### 一、概述 Oracle数据库提供了多种压缩技术来减少存储空间的需求,提高I/O效率。这些技术包括基本压缩(Basic Compression)、在线事务处理压缩(OLTP Compression)、仓库压缩(Warehouse Compression)以及归档压缩(Archive Compression)等。本文将详细介绍Oracle中的表压缩技术及其应用场景。 #### 二、表压缩的重要性 表压缩通过减少数据存储空间来优化数据库性能,具体好处包括: - **减少存储成本**:通过压缩数据减少所需的物理磁盘空间。 - **提高I/O效率**:压缩后的数据能够更快地读取到内存中,从而提高应用程序响应速度。 - **降低CPU消耗**:虽然压缩和解压缩操作会增加CPU负载,但对于大多数应用场景来说,这种额外的CPU消耗是值得的,因为它带来了更高的I/O效率。 #### 三、压缩选项及应用场景 ##### 1. 基本压缩(Basic Compression) - **压缩比**:较高 - **CPU消耗**:最小 - **应用场景**:决策支持系统(DSS) - **特点**:仅支持直接路径写入操作时的数据压缩。 ##### 2. 在线事务处理压缩(OLTP Compression) - **压缩比**:较高 - **CPU消耗**:最小 - **应用场景**:在线事务处理(OLTP)、决策支持系统(DSS) - **特点**:支持所有类型的SQL数据压缩。 ##### 3. 仓库压缩(Warehouse Compression) - **压缩比**:更高 - **CPU消耗**:较高 - **应用场景**:决策支持系统(DSS) - **特点**:采用混合列式压缩(Hybrid Columnar Compression),对于非直接路径写入的数据使用较低的压缩模式,而对于直接路径写入的数据则使用更高的压缩模式。 ##### 4. 归档压缩(Archive Compression) - **压缩比**:最高 - **CPU消耗**:最高 - **应用场景**:历史数据归档 - **特点**:同样采用混合列式压缩,适用于长期保存的历史数据压缩。 #### 四、如何创建和管理压缩表 1. **创建压缩表** - 可以通过`CREATE TABLE`语句直接指定压缩选项,例如: ```sql CREATE TABLE table_name (columns...) COMPRESS FOR OLTP; ``` - 或者先创建表再使用`ALTER TABLE`语句进行压缩设置: ```sql ALTER TABLE table_name COMPRESS FOR OLTP; ``` 2. **查看压缩状态** - 使用以下查询语句查看表的压缩状态: ```sql SELECT table_name, compression, compress_for FROM user_tables WHERE table_name = 'EMP'; ``` 3. **改变表的压缩状态** - 启用或禁用表压缩: ```sql ALTER TABLE table_name COMPRESS FOR type; -- 启用表压缩 ALTER TABLE table_name NOCOMPRESS; -- 禁用表压缩 ``` 4. **表分区压缩** - 分区压缩的选项默认与表相同,但也可以单独指定或更改: ```sql ALTER TABLE table_name MODIFY PARTITION partition_name COMPRESS FOR type; -- 新数据压缩 ALTER TABLE table_name MOVE PARTITION partition_name COMPRESS; -- 新旧数据均压缩 ``` 5. **在压缩表上添加和删除列** - 对于使用`BASIC`压缩级别的表,新增列时不能指定默认值: ```sql ALTER TABLE employees ADD(column_name column_type DEFAULT value); -- 不支持默认值 ``` #### 五、注意事项 1. **OLTP表压缩限制**:不支持超过255个字段的表,也不支持LONG数据类型。 2. **块大小与压缩比率**:更大块大小并不一定意味着更好的OLTP表压缩比率。 3. **LOB数据的处理**:建议使用Secure Files LOBs存储在Oracle数据库中,并使用Secure Files压缩和重复数据删除来减少LOB请求的存储量。 #### 六、总结 通过合理运用Oracle数据库中的压缩技术,不仅可以显著减少存储成本,还能有效提升系统的整体性能。开发者应根据不同的应用场景选择合适的压缩方案,并适时调整以达到最佳效果。
非lob列可压缩;
lob列也可压缩;
---------------------------表压缩(非lob)
重要:
建表后,要用 alter table 表名 move compress [选项] 处理下,否则占用空间不会压缩(貌似bug);
表压缩方式:
Table 压缩方式
压缩比
CPU 消耗
应用类型
说明
Basic compression
High
Minimal
DSS
仅直接路径写才压缩;
OLTP compression
High
Minimal
OLTP, DSS
所有sql数据;
Warehouse compression
(Hybrid Columnar Compression
--混合列式压缩)
Higher
Higher
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助