今日的学习目标:
学习openGauss存储模型-行存和列存
今日的学习体会:
openGauss存储模型支持行存储、列存储和行列混合存储。通常openGauss用于业务场景的数据库,默认使用行存储,仅对执行复杂查询且数据量大的数据分析场景时,才使用列存储。
今日的学习步骤:
课程学习
连接数据库
su - omm
gsql -r
1.创建行存表
CREATE TABLE test_t1
(
col1 CHAR(2),
col2 VARCHAR2(40),
col3 NUMBER
);
–压缩属性为no
\d+ test_t1
insert into test_t1 select col1, col2, col3 from (select generate_series(1, 100000) as key, repeat(chr(int4(random() * 26) + 65), 2) as col1, repeat(chr(int4(random() * 26) + 65), 30) as col2, (random() * (10^4))::integer as col3);
2.创建列存表
CREATE TABLE test_t2
(
col1 CHAR(2),
col2 VARCHAR2(40),
col3 NUMBER
)
WITH (ORIENTATION = COLUMN);
–压缩属性为low
\d+ test_t2;
–插入和行存表相同的数据
insert into test_t2 select * from test_t1;
3.占用空间对比
\d+
4.对比读取一列的速度
analyze VERBOSE test_t1;
analyze VERBOSE test_t2;
–列存表时间少于行存表
explain analyze select distinct col1 from test_t1;
explain analyze select distinct col1 from test_t2;
5.对比插入一行的速度
–行存表时间少于列存表
explain analyze insert into test_t1 values(‘x’, ‘xxxx’, ‘123’);
explain analyze insert into test_t2 values(‘x’, ‘xxxx’, ‘123’);
6.清理数据
drop table test_t1;
drop table test_t2;




