列存优势:
1、列存没有行存1666列的限制
2、列存的大量记录数扫描比行存节约资源
3、列存压缩比高,节约空间
4、列存的大量数据计算可以使用向量化执行,效率高
行存优势:
1、行存查询多列时快
2、行存DML效率高
简单来说,行存适合OLTP业务,列存适合OLAP业务。
如果业务是混合负载,既有高并发SQL,又有实时分析业务怎么办?
Oracle的做法:
in memory column store,实际上是两份存储,一份在磁盘(行存),一份在内存中使用列存。
根据SQL,优化器选择扫描列存还是行存。(通常看planNODE中数据扫描的行选择性,输出的行数,输出的列数等)
Oracle in memory column store是两份存储的思路。
PostgreSQL如何应对混合业务场景呢?
当前PG已经有了SMP并行执行的优化器功能,丰富的聚合函数,窗口函数等,已经有很好的OLAP处理能力。如果能在数据存储组织形式上支持到位,势必会给OLAP的能力带来更大的质的飞跃,以更好的适合OLTP OLAP混合业务场景。