Oracle压缩表表空间

WBOY
풀어 주다: 2016-06-07 16:55:41
원래의
1207명이 탐색했습니다.

在Orcle9i第2版中,表压缩特性通过删除在数据库表中发现的重复数据值来节省空间。压缩是在数据库的数据块级别上进行的。当确定一

从Oracle 9iR2 开始,ORACLE提供了表/表空间压缩技术,以减少磁盘开销,节省空间,并在某些情况下提高查询性能。

表压缩是如何工作的

在Orcle9i第2版中,表压缩特性通过删除在数据库表中发现的重复数据值来节省空间。压缩是在数据库的数据块级别上进行的。当确定一个表要被压缩后,数据库便在每一个数据库数据块中保留空间,以便储存在该数据块中的多个位置上出现的数据的单一拷贝。这一被保留的空间被称作符号表(symbol table)。被标识为要进行压缩的数据只存储在该符号表中,而不是在数据库行本身内。当在一个数据库行中出现被标识为要压缩的数据时,该行在该符号表中存储一个指向相关数据的指针,而不是数据本身。节约空间是通过删除表中数据值的冗余拷贝而实现的。

对于用户或应用程序开发人员来说,表压缩的效果是透明的。无论表是否被压缩,开发人员访问表的方式都是相同的,所以当你决定压缩一个表时,不需要修改SQL查询。表压缩的设置通常由数据库管理人员或设计人员进行配置,,几乎不需要开发人员或用户参与。

1.表级别:

1.1 创建一个压缩表:

创建表时使用COMPRESS关键字,COMPRESS关键字指示Oracle数据库尽可能以压缩的格式存储该表中的行。

SQL> create table tmp_test

(id number,phone varchar2(20),create_time date)

compress;

1.2 修改现有表为压缩表:

SQL> alter table tmp_test compress;

取消表的压缩:

SQL> alter table tmp_test nocompress;

1.3 确定表是否被压缩:

确定一个表是否使用了压缩,查询user_tables,compression字段表明表是否被压缩.

SQL> select table_name,compression from user_tables where table_name not like 'BIN%';

TABLE_NAME COMPRESS

------------------------------ --------

CLASSES ENABLED

ROOMS ENABLED

STUDENTS DISABLED

MAJOR_STATS DISABLED

2.表空间级别:

2.1 创建表压缩空间:

可以在表空间级别上定义COMPRESS属性,既可以在生成时利用CREATE TABLESPACE来定义,也可以稍后时间利用ALTER TABLESPACE来定义。

与其他存储参数类似,COMPRESS属性也具有一些继承特性。当在一个表空间中创建一个表时,它从该表空间继承COMPRESS属性。

可以在一个表空间直接压缩或解压缩一个表,而不用考虑表空间级别上的COMPRESS属性。

2.2 使现有表空间转换为压缩表空间 SQL> alter tablespace sms default compress;
SQL> alter tablespace sms default nocompress;

2.3 确定是否已经利用COMPRESS对一个表空间进行了定义,可查询USER_TABLESPACES数据字典视图并查看DEF_TAB_COMPRESSION列

SQL> select tablespace_name,def_tab_compression from user_tablespaces;

TABLESPACE DEF_TAB_

---------- --------

USERS DISABLED

TEST DISABLED

UNDOTBS01 DISABLED

STATPACK DISABLED

linux

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿