在 OpenGauss 中,列存储是一种高效的数据存储方式,它在处理分析查询和数据仓库工作负载时具有很高的性能优势。列存储将表中的数据按列存储在磁盘上,而不是按行存储,这样可以极大地提高数据读取和分析操作的效率。当涉及大量数据的扫描、聚合和过滤操作时,列存储可以比传统的行存储方式更加高效。
列存储是一种优化技术,用于在数据库系统中存储和查询大量数据。与传统的行存储方式不同,列存储将每个列的数据分别存储在独立的存储单元中,而不是按照行的方式存储。这种存储方式在分析性查询、聚合操作和大规模数据处理等场景下具有很大的优势。
行、列存储模型各有优劣,建议根据实际情况选择。通常openGauss用于OLTP(联机事务处理)场景的数据库,默认使用行存储,仅对执行复杂查询且数据量大的OLAP(联机分析处理)场景时,才使用列存储。默认情况下,创建的表为行存储。行存储和列存储的差异如下图所示:
列存储的特点和优势:
- 压缩效率高:由于相同类型的数据在列中是连续存储的,可以采用更加高效的压缩算法,从而减少存储空间的使用。
- 数据读取效率高:在查询中只加载需要的列,减少了不必要的数据传输,提高了查询效率。
- 聚合操作效率高:在列存储中,同一列的数据相邻存储,这样在进行聚合操作时只需要对该列中的数据进行计算,减少了不必要的读取和计算。
- 列存储适合分析性查询:分析性查询通常涉及多个列的聚合和筛选操作,列存储的存储方式更适合这种场景,可以提高查询效率。
- 适用于大规模数据处理:列存储在大规模数据处理、数据仓库等场景中具有明显的性能优势,能够更好地支持复杂的分析任务。
在先前的学习中,我通过很多文章来对列存储的一些模块进行了学习,以下为总结了先前所有列存储的文章学习连接:
文章 | 连接 |
列存储(Copy)相关 | 【 OpenGauss源码学习 —— 列存储(CopyTo)】-CSDN博客 【OpenGauss源码学习(CopyOneRowTo)】-CSDN博客 |
列存储介绍相关 | 【OpenGauss源码学习 —— 列存储(创建表)】-CSDN博客 |
列存储(Insert)相关 | 【 OpenGauss源码学习 —— 列存储(Insert)】_J.Kuchiki的博客-CSDN博客 |
列存储(analyze)相关 | 【 OpenGauss源码学习 —— 列存储(analyze)(一)】_J.Kuchiki的博客-CSDN博客 【 OpenGauss源码学习 —— 列存储(analyze)(二)】-CSDN博客 【 OpenGauss源码学习 —— 列存储(analyze)(三)】-CSDN博客 【 OpenGauss源码学习 —— 列存储(analyze)(四)】-CSDN博客 |
列存储(autoanalyze)相关 | 【 OpenGauss源码学习 —— 列存储(autoanalyze)(一)】-CSDN博客 【 OpenGauss源码学习 —— 列存储(autoanalyze)(二)】-CSDN博客 【 OpenGauss源码学习 —— 列存储(update_pages_and_tuples_pgclass)】-CSDN博客 |
列存储(CU)相关 | 【 OpenGauss源码学习 —— 列存储(CU)(一)】-CSDN博客 【 OpenGauss源码学习 —— 列存储(CU)(二)】-CSDN博客 |
以上便为目前我所学习的内容,在后续的学习中,我也会持续不断地完善和更新更多有关列存的模块知识。