2011-09-01 11:01:25 来源:互联网
优点:节省空间并在一定条件下提高查询性能。
缺点:在更新操作时,性能有很大下降,MERGE/UPDATE操作应注意。
要创建一个压缩的表,可在CREATE TABLE语句中使用COMPRESS关键字。COMPRESS关键字指示Oracle数据库尽可能以压缩的格式存储该表中的行。
或者,你可以用ALTER TABLE语句来修改已有表的压缩属性,如下所示:
ALTER TABLE TABLE_NAME COMPRESS;
为了确定是否已经利用COMPRESS对一个表进行了定义,可查询DBA_TABLES数据字典视图并查看COMPRESSION列,DISABLED表示未压缩。
也可以在表空间级别上定义COMPRESS属性,既可以在生成时利用CREATE TABLESPACE来定义,也可以稍后时间利用ALTER TABLESPACE来定义。与其他存储参数类似,COMPRESS属性也具有一些继承特性。当在一个表空间中创建一个表时,它从该表空间继承COMPRESS属性。为了确定是否已经利用COMPRESS对一个表空间进行了定义,可查询DBA_TABLESPACES数据字典视图并查看DEF_TAB_COMPRESSION列。
为了确保数据被实际压缩,你需要利用一种正确的方法将数据加载或插入到表中。只有在利用以下4种方法之一批量加载或批量插入过程中才会进行数据压缩:
直接路径SQL*Loader
带有APPEND提示的串行INSERT
并行INSERT
CREATE TABLE … AS SELECT
如果你有一个已有的未压缩/压缩表,那么你可以利用ALTER… MOVE COMPRESS/NOCOMPRESS语句对其进行压缩/ 解压缩。
可以使用用于压缩表的类似方式来压缩物化视图。
CREATE MATERIALIZED VIEW VIEW_NAME
COMPRESS
AS SELECT-STATEMENT ;
基于多个表的联接生成的物化视图通常很适于压缩,因为它们通常拥有大量的重复数据项。你可以使用ALTER MATERIALIZED VIEW命令来改变一个物化视图的压缩属性。下面的命令显示了如何压缩一个已有的未压缩的物化视图。
ALTER MATERIALIZED VIEW VIEW_NAME COMPRESS;
当使用此命令时,请注意通常是在下一次刷新该物化视图时才会进行实际的压缩。
压缩/解压缩分区(子分区)可以利用ALTER TABLE …MOVE PARTITION(SUBPARTITION) PARTITION_NAME(SUBPARTITION_NAME) COMPRESS/NOCOMPRESS命令对此分区进行压缩/解压缩,
查询分区或子分区压缩状态,可以查询数据字典视图DBA_TAB_PARTITIONS / DBA_TAB_SUBPARTITIONS。
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。