您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle11gR1中表压缩性能探讨
Oracle9i开始引入表压缩技术,主要用于数据仓库项目节约存储空间,在11g中它已经成为一个主流特性,在OLTP数据库上的表现也让人非常满意了,除了节约存储空间外,压缩可导致I/O性能增强,减少缓冲区内存占用,使用这些优点是要付出代价的,因为压缩引起CPU开销较大,因此它不是在任何情况下都是有益的。压缩子句可以在表空间,表或分区一级使用下面的选项指定:◆NOCOMPRESS-表或分区不压缩,当没有具体指定压缩子句时这是默认行为。◆COMPRESS-这个选项被认为适合于数据仓库系统,只在直接路径插入过程中在表或分区上启用压缩。◆COMPRESSFORDIRECT_LOADOPERATIONS-这个选项与COMPRESS关键字有同样的影响。◆COMPRESSFORALLOPERATIONS-这些选项被认为适合于OLTP系统,如名字暗示的那样,这些选项为所有操作启用了压缩,包括普通的DML语句,这个选项需要COMPATIBLE初始化参数设置为11.1.0或更高。下面的例子展示了在表和分区一级应用多个压缩选项。--Tablecompression.CREATETABLEtest_tab_1(idNUMBER(10)NOTNULL,descriptionVARCHAR2(50)NOTNULL,created_dateDATENOTNULL)COMPRESSFORALLOPERATIONS;--Partition-levelcompression.CREATETABLEtest_tab_2(idNUMBER(10)NOTNULL,descriptionVARCHAR2(50)NOTNULL,created_dateDATENOTNULL)PARTITIONBYRANGE(created_date)(PARTITIONtest_tab_q1VALUESLESSTHAN(TO_DATE('01/01/2008','DD/MM/YYYY'))COMPRESS,PARTITIONtest_tab_q2VALUESLESSTHAN(TO_DATE('01/04/2008','DD/MM/YYYY'))COMPRESSFORDIRECT_LOADOPERATIONS,PARTITIONtest_tab_q3VALUESLESSTHAN(TO_DATE('01/07/2008','DD/MM/YYYY'))COMPRESSFORALLOPERATIONS,PARTITIONtest_tab_q4VALUESLESSTHAN(MAXVALUE)NOCOMPRESS);表级压缩设置反映在[dba|all|user]_tables视图中的COMPRESSION和COMPRESS_FOR列。SELECTtable_name,compression,compress_forFROMuser_tables;TABLE_NAMECOMPRESSCOMPRESS_FOR--------------------------------------------------------TEST_TAB_1ENABLEDFORALLOPERATIONSTEST_TAB_22rowsselected.SQL没有使用表级压缩的话这些列将显示NULL值。分区级压缩设置反映在[DBA|ALL|USER]_TAB_PARTITIONS视图中的COMPRESSION和COMPRESS_FOR列。SELECTtable_name,partition_name,compression,compress_forFROMuser_tab_partitions;TABLE_NAMEPARTITION_NAMECOMPRESSCOMPRESS_FOR--------------------------------------------------------------------------------------TEST_TAB_2TEST_TAB_Q1ENABLEDDIRECTLOADONLYTEST_TAB_2TEST_TAB_Q2ENABLEDDIRECTLOADONLYTEST_TAB_2TEST_TAB_Q3ENABLEDFORALLOPERATIONSTEST_TAB_2TEST_TAB_Q4DISABLED4rowsselected.SQL可以使用altertable命令修改表和分区的压缩设置,修改对现有的数据没有影响,只对应用到表上的新操作有影响。ALTERTABLEtest_tab_1NOCOMPRESS;ALTERTABLEtest_tab_2MODIFYPARTITIONtest_tab_q4COMPRESSFORALLOPERATIONS;使用createtablespace和altertablespace命令可以修改表空间级的默认压缩设置,当前的设置显示在DBA_TABLESPACES视图的DEF_TAB_COMPRESSION和COMPRESS_FOR列中。CREATETABLESPACEtest_tsDATAFILE'/u01/app/oracle/oradata/DB11G/test_ts01.dbf'SIZE1MDEFAULTCOMPRESSFORALLOPERATIONS;SELECTdef_tab_compression,compress_forFROMdba_tablespacesWHEREtablespace_name='TEST_TS';DEF_TAB_COMPRESS_FOR--------------------------ENABLEDFORALLOPERATIONS1rowselected.SQLALTERTABLESPACEtest_tsDEFAULTNOCOMPRESS;SELECTdef_tab_compression,compress_forFROMdba_tablespacesWHEREtablespace_name='TEST_TS';DEF_TAB_COMPRESS_FOR--------------------------DISABLED1rowselected.SQLDROPTABLESPACEtest_tsINCLUDINGCONTENTSANDDATAFILES;在多级指定了压缩设置时,总是使用最详细的设置,如:分区设置总是覆盖表设置,表设置总是覆盖表空间设置。表压缩有关的限制包括:◆压缩表如果使用了COMPRESSFORALLOPERATIONS选项,它只能添加或删除列。◆压缩表必须有多余255列。◆压缩不能应用于lob段。◆表压缩只对堆组织表有效,对索引组织表无效。◆压缩子句不能应用于哈希分区或哈希-列表分区,相反,它们必须从表空间、表或分区设置中继承它们的压缩设置。◆表压缩不能指定给扩展表或群集表。来源:网络编辑:联动北方技术论坛
本文标题:Oracle11gR1中表压缩性能探讨
链接地址:https://www.777doc.com/doc-2847667 .html