前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu18 安装和使用 Greenplum

Ubuntu18 安装和使用 Greenplum

原创
作者头像
总想玩世不恭
修改2021-05-27 18:07:47
8860
修改2021-05-27 18:07:47
举报
文章被收录于专栏:Greenplum 数据库

安装教程

按照 Greenplum官方安装教程 一步一步来即可。

缺少的步骤

主机名修改

代码语言:txt
复制
hostnamectl set-hostname mdw
reboot

配置 /etc/host

代码语言:txt
复制
vim /etc/hosts
末尾追加 本机ip mdw sdw

本机ip别写127.0.0.1

打通服务器间连接

代码语言:txt
复制
vim ~/greenplum/all_hosts
下面加两行
mdw
sdw

遇到的问题

gpssh 报错

gpssh-exkeys -h localhost 这一步,显示无法连接本地 ssh。

解决这个问题方法就是配一下 ssh 公钥登录,参考 ssh公钥登录配置

hostname报错

在官方教程里面有一步需要自己新建一个 MACHINE_LIST_FILE文件,并将本机的 hostname 放进去。

同时要将MASTER_HOSTNAME改为本机的 hostname 。

简要使用

集群初始化

部署在一台4核古董机上,拥有高达4GB的内存和1T的HDD。

1个master和3个segment,没有standby。

代码语言:txt
复制
gpinitsystem -c gpinitsystem_singlenode

建表

建两张表,一大一小,大的约为30GB(5亿条数据),小的3GB(5千万条)。

两张表结构相同,均以 id 作为分布键,info和val为1,100范围内的随机数。

对应SQL如下

代码语言:txt
复制
create table tbl_test (id int, info int, val int) distributed by (id);
create table tbl_small (id int, info int, val int) distributed by (id);

insert into tbl_test select generate_series(1,500000000),(random()*100)::int,(random()*100)::int from generate_series(1,1);

insert into tbl_small select generate_series(1,50000000),(random()*100)::int,(random()*100)::int from generate_series(1,1);

建完表格后,可以查询对应表所占的物理空间和数据在各个segment上的分布情况

代码语言:txt
复制
select gp_segment_id, count(*) from tbl_test group by gp_segment_id;
select gp_segment_id, count(*) from tbl_small group by gp_segment_id;
--查看表存储空间
select pg_size_pretty(pg_relation_size('tbl_test')); 
select pg_size_pretty(pg_relation_size('tbl_small')); 

其数据在segment的分布结果如下图所示

每个表所占用的存储空间如下图所示

查询

以分布键作为过滤条件。

代码语言:txt
复制
SELECT tbl_test.val,tbl_small.val 
FROM tbl_test
INNER JOIN tbl_small 
ON tbl_test.id = tbl_small.id WHERE tbl_test.info < 5;

非分布键作为过滤条件。

代码语言:txt
复制
SELECT tbl_test.id,tbl_small.id
from tbl_test
inner join tbl_small 
on tbl_test.val = tbl_small.val where tbl_test.info < 5;

分区表查询

建立分区表

表的列属性与之前一样,这次按info值3等分分区

代码语言:txt
复制
create table tbl_distribute (id int, info int, val int) 
DISTRIBUTED BY (id)
PARTITION BY RANGE(info)
(
  partition p1 start ('0') inclusive end ('33') exclusive, 
  partition p2 start ('33') inclusive end ('66') exclusive, 
  partition p3 start ('66') inclusive end ('100') exclusive, 
  default partition default_p 
);

插入数据也和之前类似,往主表里插入5亿条数据库

代码语言:txt
复制
insert into tbl_distribute select generate_series(1,500000000),(random()*100)::int,(random()*100)::int from generate_series(1,1);

查询

查询 info<50 的元组,在做了分区表之后,其查询计划如下图所示

代码语言:txt
复制
EXPLAIN SELECT id,val
FROM tbl_distribute
WHERE info < 50;

SELECT tbl_distribute.id,tbl_small.id
from tbl_distribute
inner join tbl_small 
on tbl_distribute.val = tbl_small.val where tbl_distribute.info < 5;

同样是查询 info<50 的元组,其查询计划如下图所示

代码语言:txt
复制
EXPLAIN SELECT id,val
FROM tbl_test
WHERE info < 10;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装教程
    • 缺少的步骤
      • 主机名修改
      • 配置 /etc/host
      • 打通服务器间连接
    • 遇到的问题
      • gpssh 报错
      • hostname报错
  • 简要使用
    • 集群初始化
      • 建表
        • 查询
          • 分区表查询
            • 建立分区表
            • 查询
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档