压缩表空间

压缩表空间的优点:节省空间
            缺点:消耗cpu
            适合:一般用于存放历史数据,或者不经常update delete的表     
压缩表空间技术是从11g 开始的,10g一般还是压缩表


创建压缩表空间:
SQL> CREATE TABLESPACE  compress01 datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORA11G\COMPRESS01.DBF' DEFAULT COMPRESS FOR OLTP  ;
表空间已创建。

创建大文件的压缩表空间
SQL> CREATE bigfile TABLESPACE  compress02 datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORA11G\COMPRESS02.DBF' DEFAULT COMPRESS FOR OLTP  ;
表空间已创建。

创建一个普通表空间,然后修改普通表空间为压缩表空间
SQL> CREATE TABLESPACE test datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORA11G\test01.DBF' size 20m  ;
表空间已创建。
SQL> alter tablespace test default  compress for oltp
;
表空间已更改。

SQL> select  tablespace_name, compress_for from dba_tablespaces;
TABLESPACE_NAME                COMPRESS_FOR
------------------------------ ------------------------
TEST                           OLTP
COMPRESS01                     OLTP
COMPRESS02                     OLTP
已选择8行。
取消表空间的压缩
SQL> alter tablespace test default nocompress;
 
表空间已更改。
 
SQL> select  tablespace_name, compress_for from dba_tablespaces;
TABLESPACE_NAME                COMPRESS_FOR
------------------------------ ------------------------
TEST
COMPRESS01                     OLTP
COMPRESS02                     OLTP
TEST5
 
已选择9行。



 
SQL> CREATE TABLESPACE test5 datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORA11G\test02.DBF' size 20m  autoextend  on 
next 10m extent management local   uniform size 1m ;
 
表空间已创建。


在compress01 表空空间里创建表
--在压缩表空间里创建oltp压缩表
SQL> create table t4 compress   for oltp  tablespace compress01  as  select * From emp where 0=1;
表已创建。
---在压缩表空间里创建非压缩表
SQL>create table t5  tablespace  compress01   as  select * From emp where 0=1;
表已创建。
SQL> insert into t4 select *From test;
已创建196608行。
SQL> insert into t5 select *From test;
已创建196608行。
SQL> commit;
提交完成。
SQL>  analyze table t5 compute statistics;
表已分析。
SQL>  analyze table t4 compute statistics;
表已分析。
SQL> select table_name,blocks,compress_for From dba_tables where table_name in ('T4','T5');
TABLE_NAME                         BLOCKS COMPRESS_FOR
------------------------------ ---------- ------------
T4                                    496 OLTP
T5                                    496 OLTP
结论:在oltp压缩表空间里创建表,如果不指定默认的压缩方式,默认是按照表空间的压缩方式oltp方式来进行压缩

SQL> create table t6 compress  tablespace  compress01   as  select * From emp where 0=1;
表已创建。
SQL> select table_name,blocks,compress_for From dba_tables where table_name in ('T4','T5','T6');
TABLE_NAME                         BLOCKS COMPRESS_FOR
------------------------------ ---------- ------------
T4                                    496 OLTP
T5                                    496 OLTP
T6                                        BASIC
结论:如果在oltp压缩表空间内创建表的时候,指定压缩方式为basic compress,那么创建的表是按照basic compression 压缩
说明表级别的压缩方式会覆盖表空间级别的压缩方式

索引的压缩:

SQL> create index ind_t4 on t4(empno,ename)  tablespace compress01;
索引已创建。
SQL> create index ind_t5 on t5(empno,ename)  compress tablespace compress01;
索引已创建。
SQL> select index_name,compression ,leaf_blocks,tablespace_name From user_indexes  where table_name in ('T4','T5');
INDEX_NAME                     COMPRESS LEAF_BLOCKS TABLESPACE_NAME
------------------------------ -------- ----------- ------------------------------------------------------------
IND_T5                         ENABLED          303 COMPRESS01
IND_T4                         DISABLED         573 COMPRESS01
结论:虽然我们是在压缩表空间里创建索引,但是索引仍然是disabled,没有压缩,所有如果要压缩索引,必须手动指明compress






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值