姓名:杨宝秋,OCM,ACE。近8年的TB级数据库设计、建设、管理、运行维护、调优经验,也做了7年的Hp和IBM Rs6000的系统管理员,而且是获得了BCFP认证的SAN管理员,现为中国联通黑龙江分公司数据库主管。

ORACLE的数据段压缩技术 part5

上一篇 / 下一篇  2008-02-21 11:53:01 / 天气: 晴朗 / 心情: 高兴 / 个人分类:Oracle

6加大压缩比的方法

常常会有人问,怎样才能加大一个表的压缩比,节约更多的空间呢?明析了ORACLE段压缩技术的原理,回答这样的问题是很容易的。如果一个块中相同的数据越多,压缩比也就越大,因此对表中的数据进行排序后压缩可以达到这样的目的。问题又来了,表中的列如果很多,选取哪一更进行排序呢?在实际的测试中总结起来,一个列的distinct值的数据与表压缩后占的block相近时,此时压缩比是最优的,选取哪一列在实际工作中是需要测试的。

还以表T_28672为例,含28672条数据,已压缩,其中EMPNO14个不同的值,COMM列含有4个不同的值。

SQL> create table T_28672_EMPNO compress

 2   as select * from T_28672 order by EMPNO;

 

Table created.

 

SQL> create table T_28672_COMM compress

 2   as select * from T_28672 order by COMM;

 

Table created.

 

SQL> execute show_space('T_28672');

Unformatted Blocks .....................              0

FS1 Blocks (0-25) ......................               0

FS2 Blocks (25-50) .....................              0

FS3 Blocks (50-75) .....................              0

FS4 Blocks (75-100).....................              0

Full Blocks ............................             43

Total Blocks............................             48

Total Bytes.............................        393,216

Total MBytes............................              0

Unused Blocks...........................              0

Unused Bytes............................              0

Last Used Ext FileId....................              4

Last Used Ext BlockId...................          3,897

Last Used Block.........................              8

 

PL/SQL procedure successfully completed.

 

SQL> execute show_space('T_28672_EMPNO);

ERROR:

ORA-01756: quoted string not properly terminated

 

SQL> execute show_space('T_28672_EMPNO');

Unformatted Blocks .....................              0

FS1 Blocks (0-25) ......................              0

FS2 Blocks (25-50) .....................              0

FS3 Blocks (50-75) .....................              0

FS4 Blocks (75-100).....................              0

Full Blocks ............................             40

Total Blocks............................             48

Total Bytes.............................        393,216

Total MBytes............................              0

Unused Blocks...........................              3

Unused Bytes............................         24,576

Last Used Ext FileId....................              4

Last Used Ext BlockId...................          3,769

Last Used Block.........................              5

 

PL/SQL procedure successfully completed.

 

SQL> execute show_space('T_28672_COMM');

Unformatted Blocks .....................              0

FS1 Blocks (0-25) ......................              0

FS2 Blocks (25-50) .....................              0

FS3 Blocks (50-75) .....................              0

FS4 Blocks (75-100).....................              0

Full Blocks ............................             41

Total Blocks............................             48

Total Bytes.............................        393,216

Total MBytes............................              0

Unused Blocks...........................              2

Unused Bytes............................         16,384

Last Used Ext FileId....................              4

Last Used Ext BlockId...................          3,817

Last Used Block.........................              6

 

PL/SQL procedure successfully completed.

 

SQL>

 

从测试中可见表压缩后占用48个块,以有14个不同的值的empno(最接近48)还是最节约空间的,Unused Bytes项最大,值为:24,576


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-10-07  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 7462
  • 日志数: 64
  • 图片数: 1
  • 建立时间: 2008-01-30
  • 更新时间: 2008-07-29

RSS订阅

Open Toolbar