Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

207

积分

1

好友

4

主题
1#
发表于 2011-11-15 17:17:10 | 查看: 4947| 回复: 1
之前有同事问我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的时候耗费了大量时间。
爱老婆,爱FM,爱音乐;挨踢,爱折腾,爱Oracle
2#
发表于 2011-11-15 20:57:21
正解

很多时候truncate很慢,就是因为数据导出的时候COMPRESS 没有设置

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-23 23:58 , Processed in 0.045175 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569