行式存储 与 列式存储

网图

自己理解

如图table表分别以行、列存储

以行存储时(TextFile),所有的数据都在一块

优点:select * from table 时效率很快,但实际应用中一般不会select *
缺点:当select a,c from table 时也会加载所有的列,也就是所有的数据,这样IO就很大

以列存储时(parquet,orc),假设a,b放一列 ,c一列,d放一列

优点:当select c,d from table 时只会加载c,d两列,这样IO就大大降低
缺点:当select * from table 会导致数据重组,耗费掉一些性能

实际业务场景

在我们实际的业务场景中,我们基本不会去select * from table 一张表。都是用到哪些字段就去查询哪些字段,所以生成业务中都是采用列式存储。

你可能感兴趣的:(行式存储 与 列式存储)