传统行存储数据压缩率低,必须按行读取,即使读取一列也必须读取整行。在分析性的作业以及业务负载的情况下,数据库往往会遇到针对大量表的复杂查询,而这种复杂查询中往往仅涉及一个较宽(表列数较多)的表中个别列。此类场景下,行存储以行作为操作单位,会引入与业务目标数据无关的数据列的读取与缓存,造成了大量IO的浪费,性能较差。因此openGauss提供了列存储引擎的相关功能。创建表的时候,可以指定行存储还是列存储。
总体来说,列存储有以下优势:
- 列的数据特征比较相似,适合压缩,压缩比很高,在数据量较大(如数仓)场景下会节省大量磁盘空间;压缩比高同时也会提高单位作业下的IO效率。
- 当表中列数比较多,但是访问的列数比较少时,列存储可以按需读取列数据,大大减少不必要的读IO,提高查询性能。
- 基于列批量数据向量运算,结合向量化执行引擎,CPU的缓存命中率比较高,性能比较好,更适合OLAP大数据统计分析的场景。
- 列存储表同样支持DML操作和MVCC,功能完备,且在使用角度做了良好的兼容,基本是对用户透明的,方便使用。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




