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

韬光养晦208 2021-12-21 10:18:50

学习目标

 

学习openGauss存储模型-行存和列存

行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。默认情况下,创建的表为行存储。

行、列存储模型各有优劣,通常用于TP场景的数据库,默认使用行存储,仅对执行复杂查询且数据量大的AP场景时,才使用列存储

课程学习

 

连接数据库

 

#第一次进入等待15秒 #数据库启动中... su - omm gsql -r

1.创建行存表

 


 
  1. CREATE TABLE test_t1

  2. (

  3. col1 CHAR(2),

  4. col2 VARCHAR2(40),

  5. col3 NUMBER

  6. );

–压缩属性为no


 
  1. \d+ test_t1

  2. 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.创建列存表

 


 
  1. CREATE TABLE test_t2

  2. (

  3. col1 CHAR(2),

  4. col2 VARCHAR2(40),

  5. col3 NUMBER

  6. )

  7. WITH (ORIENTATION = COLUMN);

–压缩属性为low

\d+ test_t2;

–插入和行存表相同的数据

insert into test_t2 select * from test_t1;

3.占用空间对比

 

\d+

4.对比读取一列的速度

 


 
  1. analyze VERBOSE test_t1;

  2. analyze VERBOSE test_t2;

–列存表时间少于行存表


 
  1. explain analyze select distinct col1 from test_t1;

  2. explain analyze select distinct col1 from test_t2;

5.对比插入一行的速度

 

–行存表时间少于列存表


 
  1. explain analyze insert into test_t1 values('x', 'xxxx', '123');

  2. explain analyze insert into test_t2 values('x', 'xxxx', '123');

6.清理数据

 


 
  1. drop table test_t1;

  2. drop table test_t2;

课程作业

 

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

需要自己建表!!

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

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

4.清理数据

...全文
225 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

220,139

社区成员

发帖
与我相关
我的任务
社区描述
加入我们一起摸鱼划水、分享快乐、学习交流 【QQ群:151836911】【版主微信:wh18363】
游戏经验分享 个人社区
社区管理员
  • 海拥✘
  • Code Writers
  • 芝麻粒儿
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

🎉 摸鱼一时爽,一直摸鱼一直爽;跟海海一起摸鱼,从入职摸到离职。

🎁 如果你是在上班时间看到了这句话,恭喜你,你已经是我们摸鱼大军中的中流砥柱了。

社区主页:https://bbs.csdn.net/forums/moyu (ctrl+D收藏一下吧)

⭐️ 摸鱼导航:

1、摸鱼小游戏:https://haiyong.site/moyu

2、学习资料:https://haiyong.site/doc/

3、摸鱼小工具:https://haiyong.site/tools/

4、摸鱼交流圈:https://haiyong.site/chat/

5、牛客【模拟面试、刷题神器】: http://mtw.so/5yjpN8

【社区积分规则】

  • 在社区「发帖」得10积分
  • 内容被管理员「加精」得10积分
  • 点赞他人内容得1积分
  • 评论内容得2积分

博主微信 👇👇👇

试试用AI创作助手写篇文章吧