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

openGauss每日一练第21天 | 学习openGauss存储模型-行存和列存

原创 tony 恩墨学院 2021-12-21
441

今天进入了第二十一天,也就是最后一天的学习了。学习了行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。默认情况下,创建的表为行存储。行、列存储模型各有优劣,通常用于TP场景的数据库,默认使用行存储,仅对执行复杂查询且数据量大的AP场景时,才使用列存储。

通过这么些天的学习,我掌握了openGauss数据库的理念,基本操作和常见的语法。

以下是我今天的作业打卡情况,请老师批阅:


1.创建行存表和列存表,并批量插入10万条数据(行存表和列存表数据相同)

进入数据库:

su - omm
gsql -r

create table tony1 (id int,name VARCHAR2(100)); ---创建行存表

\d+ tony1;


create table tony2 (id int,name VARCHAR2(100)) WITH (ORIENTATION = COLUMN);---创建列存表

\d+ tony2


insert into tony1 select id, name from (select generate_series(1, 100000) as id, repeat(chr(int4(random() * 26) + 65), 2) as name);---批量插入10万数据


select count(*) from tony1;


insert into tony2 select * from tony1;

select count(*) from tony2;


2.对比行存表和列存表空间大小

\d+


3.对比查询一列和插入一行的速度

-- 收集统计信息
analyze VERBOSE tony1;
analyze VERBOSE tony2;

-- 对比查询一列的速度
explain analyze select distinct id from tony1;
explain analyze select distinct id from tony2;

-- 对比插入一行的速度
explain analyze insert into tony1 values(10000, 'name_tony1');
explain analyze insert into tony2 values(20000, 'name_tony2');



以上截图说明列存查询速度快。


以上截图说明行存表时间少于列存表

4.清理数据

\d

drop table tony1; 

drop table tony2; 

\d


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

评论