ITPub博客

首页 > 数据库 > Oracle > Oracle exp中compress参数的影响测试

Oracle exp中compress参数的影响测试

原创 Oracle 作者:chenoracle 时间:2015-08-18 14:08:58 0 删除 编辑

Oracle exp 中 compress 参数的影响测试

 

1 创建表时 initial 默认为 64K ,手动设置为 5M ;

SQL> create table t1(id number) storage(initial 5m);

 

2 没有 T1 的相关数据

SQL> select segment_name,bytes,initial_extent from user_segments; 

原因: 在没有插入数据时,不会分配空间,在用户段中也查询不到,这是 11g 的新功能,延时段分配;

 

3 插入数据

SQL> insert into t1 values(1);

SQL> COMMIT;

 

4 t1 表所占空间为 5M ,初始值 5M

SQL> select segment_name,bytes,initial_extent from user_segments;

T1(bytes=5242880,initial_extent=5242880)

 

5 清空表

SQL> truncate table t1;

 

6 t1 表所占空间变成 initial 初始值 5M

SQL> select segment_name,bytes,initial_extent from user_segments;

T1(bytes=5242880,initial_extent=5242880)

 

SQL> select 5242880/1024/1024 from dual; ---5M

清空表后,t1 仍然占有5M 的空间,即初始区分配的大小

 

7 更改 initial 参数

SQL> alter table t1 move storage(initial 64K);

 

SQL> select segment_name,bytes,initial_extent from user_segments;

T1( bytes=65536 ,initial_extent=65536)

 

8 插入数据

SQL> insert into t1 select level as id from dual connect by level<=100;

 

9 t1 表所占空间为 64K

SQL> select segment_name,bytes,initial_extent from user_segments;

T1(bytes=65536,initial_extent=65536)

因为插入的数据很小,不足64K ,所以区的个数没有增加

 

10 清空表 t1

SQL> truncate table t1;

 

SQL> select segment_name,bytes,initial_extent from user_segments;

T1(bytes=65536,initial_extent=65536)

 

11 插入大量数据

SQL> insert into t1 select level as id from dual connect by level<=1000000;

 

12 查询 , 表 t1 所占空间 13M ,区扩展 28 个

SQL> select segment_name,bytes,initial_extent from user_segments;

T1(bytes=13631488,initial_extent=65536,extents=28)

 

select 13631488/1024/1024 from dual;---13M

 

13 exp 导出 t1( 不指定 compress 参数,则默认 Y)

[oracle11@back ~]$ exp chen/chen file=a.dmp tables=t1

......

About to export specified tables via Conventional Path ...

. . exporting table                             T1    1000000 rows exported

Export terminated successfully without warnings.

......

 

14 导入

SQL> show user

USER is "CHEN"

 

SQL> drop table t1 purge;

 

[oracle11@back ~]$ imp chen/chen file=a.dmp fromuser=chen touser=chen ignore=y

......

. importing CHEN's objects into CHEN

. . importing table                           "T1"    1000000 rows imported

Import terminated successfully without warnings.

......

 

SQL> col segment_name for a25

SQL> select segment_name,bytes,initial_extent,EXTENTS from user_segments;

 

SEGMENT_NAME                   BYTES INITIAL_EXTENTS EXTENTS

------------------------- ---------- --------------  -------

T1                          13631488       13631488     1

.....

 

10 rows selected.

导入后表 t1 的 初始值 自动变成所有区的 总和 , 区由 28 个变成1 个 ,也就是将 28 个区压缩成一个区 ,这是由于 compress=Y 参数引起的。

compress=Y 主要目的是 为了消除存储碎片 ,以保证某张表的所有记录都存储在连续的空间里。

但是负面效应很明显,且自 oracle9i 开始,使用了本地管理的表空间,存储碎片的问题应该比低版本好多了。

 

15 更改 t1 初始值为 64K

SQL> alter table t1 move storage(initial 64k);

 

SQL> select segment_name,bytes,initial_extent from user_segments;

 

SEGMENT_NAME                   BYTES INITIAL_EXTENT

------------------------- ---------- --------------

T1                          13631488          65536

......

 

10 rows selected.

 

16 重新导出导入 , 指定 compress=n

[oracle11@back ~]$ rm -rf a.dmp

[oracle11@back ~]$ exp chen/chen file=a.dmp tables=t1 compress=n

......

About to export specified tables via Conventional Path ...

. . exporting table                             T1    1000000 rows exported

Export terminated successfully without warnings.

......

 

SQL> drop table t1 purge;

 

[oracle11@back ~]$ imp chen/chen file=a.dmp fromuser=chen touser=chen ignore=y

......

. importing CHEN's objects into CHEN

. . importing table                           "T1"    1000000 rows imported

Import terminated successfully without warnings.

......

 

17 导出时取消压缩 (compress=N), 初始值和区的个数不变

SQL> select segment_name,bytes,initial_extent from user_segments;

 

SEGMENT_NAME                   BYTES INITIAL_EXTENT  EXTENTS

------------------------- ---------- --------------  -------

T1                          13631488          65536     28

......

10 rows selected.

欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29785807/viewspace-1775132/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: logmner(转载)
请登录后发表评论 登录
全部评论
Oracle ACE、OCMU 用户组成员、Oracle 11g OCM、微信公众号"IT小Chen"

注册时间:2014-08-05

  • 博文量
    853
  • 访问量
    2727464