暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GaussDB的行存表与列存表的选择(下)

高斯精选 2023-10-30
420

三、行列存储表的逻辑介绍

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支持行列存储。行、列存储模型各有优劣,在实际应用中,我们需要根据具体的需求选择合适的存储方式,以实现高效的数据管理和分析。无论是行存表还是列存表,都是我们在探索数据世界道路上的重要工具,值得我们深入研究和掌握。


——结束

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论