列式存储

  • 所谓行式存储,指存储结构化数据时,在底层的存储介质上,数据是以行的方式来组织的,即存储完一条记录的所有字段,再存储下一条数据的所以字段,以此类推;
  • 所谓列式存储,指存储结构化数据时,在底层的存储介质上,数据时以列的方式来组织的,即存储完若干条记录的首个字段后,再存储这些记录的第二个字段,然后是这些记录的第三个字段,以此类推,当这些记录的所有字段存储完毕后,再按照这种方式,组织存储下一批若干条记录的所有字段;
  • OLTP使用行存:通常我们增删改查是针对实体进行的,每一个实体在物理层对应一行数据也比较合理;

  • OLAP使用列存:通常用于对数据进行统计、分析等查询,列式存储可以让我们对特定列进行筛选和分析统计,更加快速,尤其是在几百上千的大宽表上进行分析筛选时优势更明显;并且列式存储由于同一列的数据都是一个类型,压缩算法用于更高的压缩率,降低磁盘的存储空间。

优势

  • AP查询更快:在OLAP场景下,列式存储比行数存储快一个数量级。
  • 对于只读查询,列式存储的IO效率更高,因为它们只需要从磁盘或者内存中读取查询所需要的那些列字段。
  • 自动索引:基于列式存储,每一列本身就相当于索引,无需额外的数据结构来创建索引。
  • 促使列式存储对OLAP性能有大幅提升的因素:压缩、延迟物化、块遍历、隐式连接;

劣势

  • 对于列式存储,写入效率差一点
    • 针对行式存储的一行数据来说,列式存储需要将一行数据分开存储,涉及多次磁盘操作。

行存VS列存

行存

  • 数据查询会带出无用的列;
  • 适合普通数据库;
  • 写入效率高,整行写入;
  • 需要单独设计索引,占用额外存储空间;

列存

  • 只读取查询的列;
  • 适合数据仓库、数据分析;适合海量数据;
  • 写入效率低;
  • 天然自动索引;
posted @ 2024-03-18 00:18  Jayzou11223  阅读(20)  评论(0编辑  收藏  举报