压缩表

Oracle压缩数据的处理基于数据库块,其本质上是通过消除在数据库块中的重复数据来实现空间节约,具体方法如下:比较数据块中包含的所有字段或记录,其中重复的数据只在位于数据块开始部分的记号表(Symbol Table)中存储一份,在其他行或字段出现同样的数据时,只记录一个指向记号表中相关数据的指针。

创建压缩表:

create table Name(

......

) compress;

alter table Name compress;

alter table Name nocompress;

物化视图的压缩:

create materialized view ViewName compress

as select ......;

alter materialized view ViewName compress;

分区表的压缩:

create table Name (

......

) compress

partition by ......;

create table Name (

......

)

partition by ......(

partition PartName ...... compress,

partition PartName ...... compress,

partition PartName ......

);

在表空间级别上定义压缩属性:

create tablespace ...... default compress;

alter tablespace ...... compress / nocompress;

当压缩属性被定义在表空间上时,在其中创建表时,该特性将被表继承,但表级别的压缩属性会覆盖表空间的压缩属性。

查看一个表是否为压缩表:

select compression from user_table where table_name=TableName;

查看一个表空间是否被压缩:

select def_tab_compression from dba_tablespace where tablespace_name=TablespaceName;

查看分区表各分区的压缩属性:

select table_name, partition_name, compression from user_tab_partitions where table_name=TableName;

表压缩的实现:

压缩表的数据要能够被压缩,必须正确地使用批量装载或插入:

1、在SQL * LOADER中使用直接路径(direct path)装载数据;

2、执行create table ... as select语句;

3、执行并行插入语句;

4、执行串行插入语句并且使用append提示。

alter table Name move compress / nocompress;

性能分析:

1、在批量装载或插入数据的过程中,由于压缩的同时进行,会引起CPU使用率提高,及导致装载时间明显增加。

2、对于普通的INSERT语句,由于没有执行压缩过程,性能几乎没有影响。

3、用DELETE语句删除压缩表的操作会比较快,主要是因为压缩表中被压缩行的数据比较小,相应的需要写日志的数据量也比较小。

4、更新压缩的操作会比较慢,主要由于ORACLE对非压缩表执行了一些优化。

5、在IO吞吐率受限制的系统执行大批量查询,比如全表扫描,压缩表将明显提高查询速度,主要由于压缩后,查找同样的数据行只需要读取更少的数据块。

压缩表,布布扣,bubuko.com

时间: 2024-10-08 00:28:14

压缩表的相关文章

oracle之压缩表

oracle压缩数据的处理基于数据库块,本质是通过消除在数据库中的重复数据来实现空间节约. 具体做法: 比较数据块中包含的所有字段或记录,其中重复的数据只在位于数据块开始部分的记号表(Symbol Table)中存储一份,在其他行或字段出现同样的数据时,只记录一个指向记号表中相关数据的指针. 性能分析: 1.在批量装载或插入数据的过程中,由于压缩的同时进行,会引起CPU使用率提高,及导致装载时间明显增加 2.对于普通的INSERT语句,由于没有执行压缩过程,性能几乎没有影响. 3.用DELETE

MySQL之MyISAM存储引擎压缩表

一.介绍 MySQL的MyISAM存储引擎支持压缩表空间,压缩后的表空间会减少,但是压缩后的表是只读的,不能插入和更新数据,如果需要更新,则需要解压后更新,再压缩 . 二.案例 1.创建数据库,创建表并指定存储引擎为MyISAM,字符集为utf8 create database myisamdb; use myisamdb; create table myisam (id int unsigned auto_increment primary key, name varchar(20) not

Exadata上SQL如何处理HCC压缩表?

上周有客户这样理解HCC压缩:为了降低存储到数据库的带宽占用,所以存储将HCC压缩过的所有数据传输到数据节点在进行解压缩,并且当采用了HCC压缩,则Exadata的智能扫描则无法使用,全部数据都需要在数据节点进行处理,全部消耗数据库节点的CPU? 但实际的上的原理并非如此,而是存储节点依然需要消耗CPU进行解压缩,并同时使用智能扫描和存储索引,具体处理过程如下 1. Exadata存储一次读取1MB的存储空间(通常HCC压缩单元是32K或64K,相当于一次读取32个或16个CU即压缩单元),在这

优化系列 | InnoDB引擎数据表压缩特性测试

一.前言Innodb Plugin引擎开始引入多种格式的行存储机制,目前支持:Antelope.Barracuda两种.其中Barracuda兼容Antelope格式.另外,Innodb plugin还支持行数据压缩特性,不过前提是采用Barracuda行存储格式.表空间启用压缩的前提是innodb表空间文件存储格式修改成:Barracuda,需要修改2个选项:innodb_file_format = "Barracuda"innodb_file_format_max = "

oracle 11G表压缩

最近一套生产库表空间一直告警在90%以上,但的磁盘硬件资源又不足,整个库已经达到26T.库里存储了近4年的数据,与业务沟通说历史数据基本上不会做操作,但是又不能归档,所以想到了压缩表来节省表空间. 随着数据库的增长,我们可以考虑使用oracle的表压缩技术.表压缩可以节省磁盘空间.减少data buffer cache的内存使用量.并可以显著的提升读取和查询的速度.当使用压缩时,在数据导入和DML操作时,将导致更多的CPU开销,然而,由于启用压缩而减少的I/O需求将抵消CPU的开销而产生的成本.

InnoDB 数据表压缩原理与限制

http://liuxin1982.blog.chinaunix.net/uid-24485075-id-3523032.html 压缩理念 通过提高CPU利用率和节约成本,降低数据库容量及I/O负载,从而使数据吞吐率得到显著提高. 压缩原理 压缩表减少了磁盘上数据库的大小,使得用户不必频繁地操作写入和读取便可以访问数据.对于 InnoDB的工作量以及传统的用户表而言(特别是在某些读取密集型的应用中,内存有足够的空间存储常用数据),数据压缩不仅大大减少了数据库所需的存储空间,而且还减少了 I/O

【SQL Server性能优化】SQL Server 2008该表压缩

当数据库是比较大的,而当你想备份,我们可以启动数据库备份压缩.这项由于备份文件比较小的压缩,所以整个备份的更快的速度,同时还低了磁盘空间的消耗. 当然还有一方面.肯定会添加cpu的消耗.只是一般的server都是多核.所以实际上对系统不会有大的影响. 事实上.不仅能够在备份的时候压缩,在SQL Server 2008中.我们还能够对表和索引进行压缩,以下通过压缩前.压缩后的比較.来展示SQL Server 2008强大的表及索引的压缩功能. 这里在公司測试数据库找了一个中型的表,共同拥有943万

Oracle 表压缩(Table Compression)技术介绍

Oracle 表压缩(Table Compression)介绍 1.官方文档说法: As your database grows in size, consider using table compression. Compression saves disk space, reduces memory use in the database buffer cache, and can significantly speed query execution during reads. Compr

【SQL Server性能优化】SQL Server 2008之表压缩

当数据库比较大,而要进行备份时,我们可以启动数据库备份的压缩,这样减少对于磁盘空间的消耗. 其实,不仅可以在备份的时候压缩,在SQL Server 2008中,我们还可以对表进行压缩,下面通过压缩前.压缩后的比较,来展示SQL Server 2008强大的表压缩功能. 这里在测试数据库找了一个较大的表,共有9439661 条记录, 1.压缩前表的大小 SP_SPACEUSED 'TB_WCB' /* name rows reserved data index_size unused TB_WCB