这是我参加「第五届青训营 」伴学笔记创作活动的第 13 天
这篇文章主要记录关于clickhouse,列存储相关的基础知识学习。
列存储是一种数据库存储技术,它将数据按列而非按行存储,从而提高查询效率。
概念
传统的行存储将数据按行存储,即一个记录的各个字段存储在一起。列存储则将一个表的每一列单独存储,这意味着每个列都有自己的存储空间。
如果一个表有三个列,那么列存储将把这三个列分别存储在三个不同的位置。当查询需要读取某些列时,列存储只需要访问包含这些列的位置,而不必访问整个行,因此查询速度更快。
工作原理
列存储的查询过程相对于行存储有所不同。在行存储中,查询需要扫描每一行记录,并逐个检查每个字段,以查找与查询条件匹配的记录。而在列存储中,查询首先确定需要查询哪些列,然后直接读取这些列所在的位置。因为每个列都有自己的存储空间,所以查询只需要访问包含需要的列的位置,而不必访问整个表的数据。这种方式可以大大减少读取的数据量,从而提高查询效率。
优缺点
列存储相对于行存储有以下优点:
- 查询效率高。列存储只需要访问需要的列,可以减少读取的数据量,从而提高查询效率。
- 压缩效率高。由于列存储将每一列单独存储,因此可以对每一列进行独立的压缩,从而达到更高的压缩效率。
- 支持列级别的数据操作。列存储可以支持列级别的数据操作,例如,对某一列进行聚合计算等。
然而,列存储也存在以下缺点:
- 更新操作效率低。由于列存储将每一列单独存储,因此更新操作需要更新多个位置,从而效率较低。
- 存储空间占用大。由于每一列都有自己的存储空间,因此列存储需要更多的存储空间。