oracle12C支持以下三种表压缩方法
⑴基本表压缩:(Compress Base)压缩比率高,CPU开心最小,适用于直接路径插入操作。常用于DSS
注:这样类型的压缩,除了直接路径插入会压缩外,普通的插入要是让数据块达到pctfree设置的标准,也会自动压缩数据块,以减少其原来占据的空间。
⑵高级行压缩:(Row Store Compress Advanced)压缩比率高,CPU开心最小,适用于所有DML操作。常用于OLTP,DSS。
⑶Hybrid Columnar压缩:通过Exadata实现
表压缩对数据库应用程序是透明的
⑴表压缩子句仅对按堆组织的表有效,【compress】关键字用于启动压缩,【nocompress】关键字用于禁用表压缩。默认是【nocompress】
⑵使用基本压缩时,oracle数据库服务器将在使用诸如直接加载或【create table as select】等操作执行批量加载时压缩数据。
⑶使用高级行压缩时,Oracle数据库在对表执行所有DML操作期间都会压缩数据。
启用基本压缩:建议为批量加载数据仓库使用这种方法,最大化块中的连续空闲空间。
create table....compress basic; --12c使用【compress】或【compress basic】都是启用基本的表压缩。
alter table 表名 compress for direct_load operations; --12c之前的使用方法
注:原始导入程序(imp)不支持直接路径insert,因此无法导入压缩格式的数据。压缩消除了块中因删除操作而形成的空隙,使块中的连续空闲空间达到最大化。
启用高级行压缩:建议为活动的OLTP环境使用这种压缩方法。
create table...row store compress advanced...; --12c的方法
alter table 表名 compress for all operations; --12c之前的方法,也可以是【compress for oltp】
压缩对pctfree的影响:
⑴采用基本压缩的表使用pctfree值为0,以实现最大化压缩,除非显示设置pctfree子句的值,否则就是0.
⑵才用高级行压缩的表或不压缩的表,pctfree默认值是10,以便在最大化压缩的同时扔允许以后对数据进行一些DML更改,除非显示覆盖该默认值。
指定表压缩的限制:
⑴可以为堆表,分区表的分区和嵌套表的存储指定表压缩。
⑵无法为列数多余255的表指定基本压缩和高级压缩。
⑶如果表是针对直接加载而压缩的,则无法删除列。
⑷如果表使用的高级行压缩,则可以删除列。
dbms_compression程序包:通过它可以知道要压缩表的预期压缩比率
⑴dbms_compression.get_compression_ratio --针对未压缩的表给出可行的压缩比率
⑵dbms_compression.get_compression_type --函数,针对给定行返回压缩类型
相关文章
- Oracle-left join两表关联只取B表匹配到的第一条记录【over partition by(分组后对组内数据排序)】
- Oracle两表关联,只取B表的第一条记录
- windows xp 环境下 Oracle8i 双击安装文件无反应的解决办法
- 表的转置 行转列: DECODE(Oracle) 和 CASE WHEN 的异同点
- Oracle用sql查询某张表的字段信息(字段类型、长度等)
- postgresql 列出某个数据库下的某个schema下面所有的表
- MySQL数据库表的设计和优化(下)
- Linux下的常用的打包和解压缩命令
- Oracle Instant Client 在windows下的安装和使用:
- Oracle中的Schema和表空间