GaussDB的行存表与列存表的选择
目录
一、前言
行存表和列存表是数据库中两种常见的数据存储方式。随着信息技术的飞速发展,数据存储和管理以及如何高效地存储和处理大量的数据已经成为了我们的一大挑战。
为了解决这个问题,行存表与列存表应运而生,它们以其独特的优势在各个场景得到了高效的应用。GaussDB支持行、列存储,本文将简单给大家介绍一下行列存储在GassuDB数据库中的应用。
二、行列存储表的概念
1、定义
- 行存表(Row-Based Table)是一种以行为单位进行数据的存储方式,每个记录都有一个唯一的行标识符。
- 列存表(Column-Based Table)是以列为单位进行数据的存储方式,每个记录都有一个唯一的列标识符。
2、优势与劣势
1)行存表的优势在于其结构简单,易于理解和操作。由于数据按照行进行存储,因此在查询某一行数据时,可以快速定位到目标位置。此外,行存表在进行数据的插入、删除和更新操作时,效率相对较高。然而,行存表的缺点也比较明显,那就是它不适合进行复杂的数据分析和处理,因为这种存储方式无法充分利用数据的关联性,导致查询性能较差。
2)列存表的优势在于其强大的查询功能和高效的存储效率。由于数据按照列进行存储,因此可以很容易地对某一列的数据进行聚合、分组等操作。此外,列存表还可以通过索引等技术提高查询性能。然而,列存表的缺点在于其结构复杂,不易于理解和操作。尤其是在进行数据的插入、删除和更新操作时,需要考虑到数据的完整性和一致性问题,因此操作起来相对繁琐。
三、行列存储表的逻辑介绍
GaussDB支持行、列存储,默认情况下,创建的表为行存储。行存储和列存储的差异如下图示。
1、行存表与行存表在硬盘上的存储方式
在基于行存储的数据库中,数据是按照行数据为基础逻辑存储单元进行存储的,一行中的数据在存储介质中以连续存储形式存在。
2、列存表与列存表在硬盘上的存储方式
在基于列式存储的数据库中,数据是按照列数据为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。
因此,行存表和列存表在硬盘上的存储方式也不同。对于行存表,每个记录都占用一个连续的空间块,而对于列存表,每个属性都有一个单独的空间块,所有属性值都存储在一个连续的空间块中。
四、行列存储表的使用建议和场景
一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。
1、行存表使用场景及GaussDB SQL示例
创建行存表,默认是创建的是行存表:
--创建行存表,默认是创建的是行存表 CREATE TABLE test_1 ( EMPLOYEE__ID CHAR(4), EMPLOYEE_NAME VARCHAR2(10), EMPLOYEE_SEX CHAR(2), EMPLOYEE_AGE INT, EMPLOYEE_SALARY MONEY ); --查看已创建的表结构 SELECT * FROM PG_GET_TABLEDEF(‘test_1’)
2、列存表使用场景及GaussDB SQL示例
创建列存表,使用关键字:WITH (ORIENTATION = COLUMN)
--创建列存表,使用关键字:WITH (ORIENTATION = COLUMN) CREATE TABLE test_2 ( EMPLOYEE__ID CHAR(4), EMPLOYEE_NAME VARCHAR2(10), EMPLOYEE_SEX CHAR(2), EMPLOYEE_AGE INT, EMPLOYEE_SALARY MONEY ) WITH (ORIENTATION = COLUMN); --查看已创建的表结构 SELECT * FROM PG_GET_TABLEDEF(‘test_2’)
五、小结
行存表和列存表各有优缺点,适用于不同的场景。GaussDB支持行列存储。行、列存储模型各有优劣,在实际应用中,我们需要根据具体的需求选择合适的存储方式,以实现高效的数据管理和分析。无论是行存表还是列存表,都是我们在探索数据世界道路上的重要工具,值得我们深入研究和掌握。
——结束

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Zadig vs. Jenkins 详细比对:时代的选择与开发者之选
01、Zadig vs. Jenkins:关于时代的选择 最近,我的合伙人 Grant 在官方公众号发布了一篇名为 《是时候和 Jenkins 说再见了》的文章,引起了社区的广泛关注和讨论。作为曾经最被广泛使用的持续构建交付工具,Jenkins 的江湖地位似乎被挑战了。评论中有一条被高度点赞顶起: 作为 Zadig 的创造者,我认为有必要与大家分享一份详细的比较文章。我的职业生涯伴随着工具、技术和基础设施的不断迭代,从十几年前的 TeamCity、Hudson,到 Jenkins、Travis、CircleCI 和 Drone,几乎每个产品和工具我个人都在企业环境下管理或者深度使用过,而 Jenkins 是我曾经非常推崇的选择。 回望 Zadig 来时的路,七年前 Zadig 她还是一个构想(Spock - 星际迷航的科学官及大副);五年前,她还是一个环境管理工具;三年前,她已经是一个好用的面向开发者的 CI/CD 平台;而今她在大规模客户的使用下,已然成为企业级一体化的云原生 DevOps 平台,通过广泛链接合作伙伴,为广义的企业开发者(包括产品、开发、测试、SRE、运维等不同职责的...
- 下一篇
GreatSQL从单机到MGR扩展纪实
一、前言 原有的业务系统跑在MySQL主从架构中,高可用通过脚本完成,但存在切换数据丢失和切换不及时风险,调研了高可用更稳定的MGR后,准备入手一试。本篇文章主要记录GreatSQL从单机扩展到MGR的详细过程,遇到的问题及解决方法。 二、基础环境 服务器角色如下 IP 端口 主机名 作用 172.17.140.25 3310 gdb1 原单机 172.17.140.24 3310 gdb2 MGR扩展节点1 172.17.139.164 3310 gdb3 MGR扩展节点2 本次验证使用的是GreatSQL8.0.32-24版本,相比MySQL官网的8.0.32,GreatSQL在性能、可靠性、易用性和安全方面,都有不错的提升,可以在后续环境中验证。具体提升点可以参考:GreatSQL简介[https://greatsql.cn/docs/8032/user-manual/2-about-greatsql/2-1-greatsql-brief-intro.html] 通过下面的命令下载GreatSQL8.0.32-24进行测试。 $ wget https://product.grea...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7