关闭

Oracle的数据表压缩

404人阅读 评论(0) 收藏 举报
分类:
Oracle的数据表压缩
压缩原理:将同一个Block里所有行的重复列值存储在表头的一块区域。该块区域被称为符号表(symbol table)。行里如果有某列的值等于
符号表里存储的值,则不存储实际的值,只存储该值在符号表里的地址。

表压缩技术适合的对象:
Block里含有重复列值的数据表;
读取较多,更改较少的表。

数据表压缩的优点:
对于Block里含有重复列值的数据表,可以极大的节省存储空间,并减少IO和占用的内存。
数据表压缩的缺点:
CPU需要进行压缩和解压操作,存在额外的消耗。
DBA需对数据的分布有一个较好的认识。

CREATE TABLE a
(a NUMBER(5),
b VARCHAR2(30) )
COMPRESS;


CREATE TABLE b
(a NUMBER(5),
b VARCHAR2(30) );

insert into a values(1,'aaaaaaaaaaaaaaaa');
insert into a values(2,'aaaaaaaaaaaaaaaa');
insert into a values(3,'aaaaaaaaaaaaaaaa');


insert into b values(1,'aaaaaaaaaaaaaaaa');
insert into b values(2,'aaaaaaaaaaaaaaaa');
insert into b values(3,'aaaaaaaaaaaaaaaa');


data_block_dump,data header at 0x2b3b07180264
===============
tsiz: 0x1f98
hsiz: 0x18
pbl: 0x2b3b07180264
76543210
flag=--------
ntab=1
nrow=3
frre=-1
fsbo=0x18
fseo=0x1f53
avsp=0x1f3b
tosp=0x1f3b
0xe:pti[0] nrow=3 offs=0
0x12:pri[0] offs=0x1f81
0x14:pri[1] offs=0x1f6a
0x16:pri[2] offs=0x1f53
block_row_dump:
tab 0, row 0, @0x1f81
tl: 23 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 02
col 1: [16] 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
tab 0, row 1, @0x1f6a
tl: 23 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 03
col 1: [16] 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
tab 0, row 2, @0x1f53
tl: 23 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 04
col 1: [16] 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
end_of_block_dump
Block dump from cache:

data_block_dump,data header at 0xf427c064
===============
tsiz: 0x1f98
hsiz: 0x18
pbl: 0xf427c064
76543210
flag=--------
ntab=1
nrow=3
frre=-1
fsbo=0x18
fseo=0x1f53
avsp=0x1f3b
tosp=0x1f3b
0xe:pti[0] nrow=3 offs=0
0x12:pri[0] offs=0x1f81
0x14:pri[1] offs=0x1f6a
0x16:pri[2] offs=0x1f53
block_row_dump:
tab 0, row 0, @0x1f81
tl: 23 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 02
col 1: [16] 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
tab 0, row 1, @0x1f6a
tl: 23 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 03
col 1: [16] 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
tab 0, row 2, @0x1f53
tl: 23 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 04
col 1: [16] 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
end_of_block_dump
Block dump from disk:

这样看来存储起来没有什么不一样。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:152791次
    • 积分:2683
    • 等级:
    • 排名:第14081名
    • 原创:111篇
    • 转载:14篇
    • 译文:1篇
    • 评论:16条
    文章分类
    最新评论