欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle的数据表压缩

程序员文章站 2024-02-05 20:31:34
...

Oracle的数据表压缩,压缩原理:将同一个Block里所有行的重复列值存储在表头的一块区域。该块区域被称为符号表(symbol table)。

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:

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