返回首页
搜 索
400-77-456-22
英米加集团
领先RFID产品与物联网解决方案专家
INMIGA group
智慧城市
智能交通
一个简单算法可以帮助物联网,金融 用户 节约9
来源:英米加集团 | 作者:inmiga | 发布时间: 3614天前 | 2337 次浏览 | 🔊 点击朗读正文 ❚❚ | 分享到:

  digoal=# create table ao1_test(c1 int, c2 text, c3 int, c4 int, c5 timestamp) with (APPENDONLY=true,BLOCKSIZE=2097152,ORIENTATION=column,COMPRESSTYPE=zlib,CHECKSUM=false);

  digoal=# insert into ao1_test select * from heap_test ;

  digoal=# analyze ao1_test;

  ANALYZE

  digoal=# select pg_size_pretty(pg_total_relation_size('ao1_test'));

  pg_size_pretty

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

  21GB

  (1 row)

  压缩比达到了 这就完了吗?

  显然还没,压缩比和数据存储关系是非常大的,为了进一步提升列存储的压缩比,我们必须找到一个非常合理的数据排序才能实现这一的目的。

  为了达到这个目的,我们需要关注几个要素:

  .1. 字段值的重复率,重复率越高的值,排序后的压缩比越高。

  .2. 字段值的平均宽度,平均宽度大的值,压缩取得的绝对效果比宽度小的值好。

  .3. 字段与字段间的线性相关性,线性关系好的字段,按其中一个A字段排序后线性关系也好,从而相关字段B的压缩效果也会比较好,从而达到双赢的目的。

  以上三个要素都提到了统计学的知识, PostgreSQL数据库在这方面是非常强大的。

  接下来会展示PostgreSQL利用窗口计算和统计分析,推算出最佳压缩比的字段排序组合。

  第一个要素,字段值重复率的计算方法:

  case

  when n_distinct < 0 then 1 + n_distinct

  when n_distinct = 1 then 1

  when n_distinct > 1 then 1 - n_distinct/reltuples

  end

电力能源
农林牧渔
航空航天
精益制造
快消零售
智能港口
司法监狱
仓储物流
安监消防
金融通信