openGauss支持行列混合存储。行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。
行、列存储模型各有优劣,建议根据实际情况选择。通常openGauss用于OLTP(联机事务处理)场景的数据库,默认使用行存储,仅对执行复杂查询且数据量大的OLAP(联机分析处理)场景时,才使用列存储。默认情况下,创建的表为行存储。行存储和列存储的差异请参见图1。
图 1 行存储和列存储的差异

上图中,左上为行存表,右上为行存表在硬盘上的存储方式。左下为列存表,右下为列存表在硬盘上的存储方式。
行、列存储有如下优缺点:
|
存储模型
|
优点
|
缺点
|
|
行存
|
数据被保存在一起。INSERT/UPDATE容易。
|
选择(SELECT)时即使只涉及某几列,所有数据也都会被读取。
|
|
列存
|
- 查询时只有涉及到的列会被读取。
- 投影(Projection)很高效。
- 任何列都能作为索引。
|
- 选择完成时,被选择的列要重新组装。
- INSERT/UPDATE比较麻烦。
|
一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。
|
存储类型
|
适用场景
|
|
行存
|
- 点查询(返回记录少,基于索引的简单查询)。
- 增、删、改操作较多的场景。
- 频繁的更新、少量的插入。
|
|
列存
|
- 统计分析类查询 (关联、分组操作较多的场景)。
- 即席查询(查询条件不确定,行存表扫描难以使用索引)。
- 一次性大批量插入。
- 表列数较多,建议使用列存表。
- 如果每次查询时,只涉及了表的少数(
相关推荐
随着数字化媒体的兴起,媒体行业的数据量呈现爆炸性增长,传统的数据库已经无法应对如此大规模和复杂的数据。在这种情况下,MongoDB作为一个分布式文档数据库,成为媒体行业存储和管理数据的首选。本文将介绍MongoDB在媒体行业中的应用实践,并探讨MongoDB的性能调优。 一、MongoDB在媒体行业中的应用实践 存储和管理媒体内容 媒体行业的核心业务是生产和传播媒体内容,这就要求媒体企业需要存储和
MySQL是一个广泛使用的关系型数据库管理系统,许多网站和应用程序都需要使用它。在使用MySQL之前,需要申请一个账号和密码以便进行连接和操作。 下面是申请MySQL账号和密码的简单步骤: 1. 打开MySQL官方网站,找到“Downloads”页面。 2. 下载并安装MySQL数据库软件。 3. 打开MySQL Workbench或其他MySQL客户端。 4. 在客户端中选择“New Conne
最近尝试在Macbook上部署Clickhouse学习使用,在此记录下相关经验和问题 安装部署 Clickhouse主要针对Linux系统进行开发,尽管也有针对Mac OS的安装包,但官方文档中说不推荐使用。因此,为了最接近原生Linux版本的Clickhouse运行的效果,尝试使用Docker进行部署安装。 可以按照Clickhouse中Docker hub上的官方文档:clickhouse/c
专家解答 通过查询任何数据库中的三个系统表,你可以获得每个表的每一个字段的默认值。下面是这个核心查询。它返回分配给当前数据库中每个用户表的默认值。这个查询在SQL 2000和 专家解答 通过查询任何数据库中的三个系统表,你可以获得每个表的每一个字段的默认值。下面是这个核心查询。它返回分配给当前数据库中每个用户表的默认值。这个查询在SQL 2000和SQL 2005中都是兼容的。 Quot
MySQL数据库的原理结构可以从多个层面进行解析,主要包括其逻辑架构、存储引擎、内存结构和文件结构等方面。以下是详细的解释: 一、MySQL逻辑架构 MySQL的逻辑架构可以分为几个主要层次: 连接层: 这一层主要负责处理客户端的连接请求,包括连接处理、身份验证、安全性等。连接池(Connection Pool)是连接层的一个重要组成部分,用于缓存用户连接、用户名、密码、权限校验等信息,以提高服务
回到顶部
|