Infobright数据库压缩比率详解

运维 数据库运维
Infobright列数据库的压缩比例,在试验上的数据是十分可观的。但究竟能压缩到什么程度?还请看本文说明。

Infobright号称数据压缩比率是10:1到40:1。前面我们已经说过了Infobright的压缩是根据DP里面的数据类型,系统自动选择压缩算法,并且自适应地调节算法的参数以达到最优的压缩比。

先看看在我的实验环境下的压缩比率,如下图所示:

相信读者可以很清楚地看到,整体的压缩比率是20.302。但是这里有一个误区,这里的压缩比率指的是数据库中的原始数据大小/压缩后的数据大小,而不是文本文件的物理数据大小/压缩后的数据大小。很明显前者会比后者大出不少。在我的实验环境下,后者是7:1左右。一般来说文本数据存入数据库之后大小会比原来的文本大不少,因为有些字段被设置了固定长度,占用了比实际更多的空间。还有就是数据库里面会有很多的统计信息数据,其中就包括索引,这些统计信息数据占据的空间绝对不小。Infobright虽然没有索引,但是它有KN数据,通常情况下KN数据大小占数据总大小的1%左右。

既然Infobright会根据具体的数据类型进行压缩,那我们就看看不同的数据类型具有什么样的压缩比率。如下表所示:

首先看看Int类型的压缩比率,结果是压缩比率上Int<mediumint<smallint。细心地读者会很容易发现tinyint的压缩比率怎么会比int还小。数据压缩比率除了和数据类型有关之外,还和数据的差异性有特别大关系,这是显而易见。posFlag只有0,1,-1三种可能,这种数据显然不可能取得很好的压缩比率。

再看看act字段,act字段使用了comment lookup,比简单的char类型具有更佳的压缩比率和查询性能。comment lookup的原理其实比较像位图索引。对于comment lookup的使用下一章节将细细讲述。

在所有的字段当中date字段的压缩比率是最高的,最后数据的大小只有0.1M。varchar的压缩比率就比较差了,所以除非必要,不然不建议使用varchar。

 

上面的数据很清楚地展示了Infobright强大的压缩性能。在此再次强调,数据的压缩不只是和数据类型有关,数据的差异程度起了特别大的作用。在选择字段数据类型的时候,个人觉得性能方面的考虑应该摆在第一位。比如上面表中一些字段的选择就可以优化,ip可以改为bigint类型,date甚至可以根据需要拆分成year/month/day三列。

责任编辑:彭凡 来源: ChinaUnix
相关推荐

2010-08-26 14:39:54

Infobright数

2010-08-26 09:13:02

Infobright

2010-08-26 09:01:27

Infobright

2011-05-24 14:48:46

压缩数据库

2011-03-28 09:27:52

数据库压缩日志

2017-06-12 18:24:25

数据库压缩技术

2011-04-01 12:58:46

ASPACCESS数据库

2010-09-07 16:12:36

SQL语句数据库压缩

2011-06-30 16:57:03

数据压缩

2010-04-02 13:59:08

Oracle数据库

2010-04-14 15:14:11

Oracle数据库

2011-07-20 12:34:49

SQLite数据库约束

2017-07-12 09:20:42

SQLite数据库移植

2010-11-30 13:37:02

数据库压缩

2011-04-08 09:42:19

Access数据库压缩文件

2021-10-12 10:22:33

数据库架构技术

2019-03-01 18:50:09

SQL Server数据库备份并压缩

2009-08-28 13:03:55

C#压缩Access数

2011-08-18 15:49:21

Oracle厉行计划

2011-05-17 15:02:15

ORACLE数据库备份
点赞
收藏

51CTO技术栈公众号