exp之compress到底在压缩什么

exp之compress到底在压缩什么
之前有同事问我compress导出的时候可以压缩多少比例,可以压缩成什么格式的。唉,想当初我也是这么认为的,其实这个参数的作用是在导入过程中创建表的时候,初始的INITIAL_EXTENT设置。
compress默认值是Y,也就是说在创建表的时候会建立一个包含所有数据块容量的初始extent,该参数只在导出的时候有效,导入的时候无效(其实你如果加上该参数会报错)。
具体看下面例子。
首先是导出之前的表的信息:
SQL> Select segment_name,bytes/1024,blocks,Extents,initial_extent From user_segments;

SEGMENT_NAME BYTES/1024 BLOCKS EXTENTS INITIAL_EXTENT
--------------------------------------------------------------------------------- ---------- ---------- ---------- --------------
T1 704 88 11 65536

做一个默认的compress=y导出之后,重新导入之后表的信息:
SQL> /

SEGMENT_NAME BYTES/1024 BLOCKS EXTENTS INITIAL_EXTENT
--------------------------------------------------------------------------------- ---------- ---------- ---------- --------------
T1 704 88 11 720896

再做一个compress=n导出之后,重新导入之后表的信息:
SQL> /

SEGMENT_NAME BYTES/1024 BLOCKS EXTENTS INITIAL_EXTENT
--------------------------------------------------------------------------------- ---------- ---------- ---------- --------------
T1 704 88 11 65536
具体的也可以在创建表的dml中看到差异:
-- Create table
create table T1
(
id NUMBER(4),
name VARCHAR2(4)
)
tablespace STORE1
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 704K
minextents 1
maxextents unlimited
);

-- Create table
create table T1
(
id NUMBER(4),
name VARCHAR2(4)
)
tablespace STORE1
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);

其实这里还可以解答一个疑惑:为什么我的一个表明明没有数据,但是在导入的时候执行了很长时间,其实就是这个参数在作怪,通常由于频繁的insert、update然后delete表之后,这个表的extent参数还是没有该表,还是维持在当初扩展到最大的值,因此在导入创建表指定extent的时候耗费了大量时间。
-The End-


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值