• Greenplum简介  

  GreenPlum是一个关系型数据库集群.,它实际上是由多个独立的数据库服务组合成的逻辑数据库。GreenPlum是基于PostgreSQL(开源数据库)的分布式数据库,它采用的是shared nothing架构(MPP  Massively Parallel Processing,即大规模并行处理),主机、操作系统、内存、存储都是节点自己控制,不存在着共享。它主要由master host,segment host,interconnect三大部分构成。

  Master节点:客户端访问连接的认证,处理传入的SQL语句,在segment之间分配工作负荷,协调每个segment返回的结果,并把最终结果返回给客户端。

  Segment节点主要做数据存储和数据处理,用户创建的索引和表被分发到各个子节点当中,每一个子节点都包含了用户数据的分片,而这些分片不存在重复的情况。

  Interconnect是GreenPlum数据库的网络层.在每个segment中起到一个ipc的作用(inter-process communication)。

  • 常用命令

  系统表:PG_TABLES:pg表信息表    pg_class:pg类信息表       pg_attribute:pg属性表    pg_type:pg类型表

  $psql -h 192.168.1.100 -p admin -d testDB -U gpadmin               #其他机器上使用psql连接到数据库

  $createdb testDB -E utf-8          #创建测试数据库

  $truncate test1_tb;                                           #*物理删除表文件*

  $export PGDATABASE=testDB                      #设置默认testDB数据库

  $select version();                                             #查询数据库版本

  $create table test_tb(id int primary key,name varchar(64));             #创建表

  $create table test_tb(id int primary key,name varchar(64)) distributed by(id,name);

  $create table test_tb(id int,name varchar(64)) distributed randomly;

  $create table test2_tb (like test1_tb);                      #复制表结构

  #create table as 可以加入distributed指定分布键,select into只能使用默认的分布键

  $create table test2_tb as select * from test1_tb distributed by(id);

  $select * into test3_tb from test1_tb;

  $select "name" as 姓名 from test_tb;            #greenplum数据库设置别名,不能使用单引号,单引号是修身变量
  $select "name" as "姓名" from test_tb;           #greenplum数据库用双引号设置别名

  $insert into test1_tb values(1,'zhangsan'),(2,'lisi'),(3,'wangwu');      #批量插入数据,分布键不要为空

  #update:不能批量对分布键执行update,因为对分布键执行update需要将数据重分布,而gp暂时不支持这个功能

  $update test1_tb set name='lier' where id=1;    #更新数据

  $delete from test1_tb where name in(select name from test_tb);            #删除数据

  $select * from pg_tables;                                                   #获取表结构

  $select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;            #获取所有数据库名

  $select pg_size_pretty(pg_total_relation_size('tb_name'));                        #查看表索引

  $SELECT A .attname AS field,      T .typname AS TYPE FROM pg_class C,         pg_attribute A,  pg_type T  WHERE      C .relname = 'tb_name' AND A .attnum > 0 AND A .attrelid = C .oid AND A .atttypid = T .oid ORDER BY   A .attnum;                                     #查看表结构

  • 索引(index)

  # \h create index                                    #查看创建索引的帮助

  # \d tb_test                                             #查看tb_test表信息

  # create index idx_01 on tb_test(id);    #为tb_test表中(id)字段创建索引

  # \d tb_test                                            #查看tb_test表信息

  # \d+ tb_test;                                         #查看tb_test表以及其子表信息

  # create index bmidx_01 on tb_test using bitmap(count);     #创建位图索引

  # explain select * from tb_test where count = 0;                     #查看tb_test表的执行计划

  # show enable_seqscan;                       #GP中默认进行序列扫描

  # set enable_seqscan=off;                    #将序列扫描的方式关闭

  # \h reindex                      #查看reindex的帮助

  # \h drop index                           #查看drop index的帮助

  # drop index idx_01;                    #删除索引idx_01

  • 视图(view)

  格式:普通视图V_【具体业务含义名称】,物化视图MV_【具体业务含义名称】

  CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ]

  # \h create view                                      #查看创建视图的帮助

  # \d tb_test                                             #查看tb_test表结构信息

  # create view vv_01 as select * from tb_test where gender = 'M';  #创建视图

  # \dv                                                        #使用“\dv”命令查看当前视图

  # \h drop view                                       #查看删除视图的帮助

  # drop view vv_01;                                 #删除视图vv_01

  • 序列(sequence)

查询哪些视图引用了某张数据表

CREATE OR REPLACE FUNCTION public.get_views_used_by_table(text)

RETURNS setof record  as

$FBODY$

select distinct vn.nspname || '.'||vc.relname as viewname

from pg_class c join pg_namespace n on n.oid=c.relnamespace

left join pg_depend d on d.refobjid =c.oid

left join pg_rewrite r on r.oid =d.objid

left join pg_class vc on r.ev_class =vc.oid

left join pg_namespace vn on vc.relnamespace=vn.oid

where  d.deptype='n' and

d.classid =2618 and

r.rulename ='_RETURN' and

vc.relkind='v' and

c.oid =$1::regclass ;

$FBODY$

LANGUAGE sql volatile;

#select public.get_views_used_by_table('public.test1');

#select * from public.get_views_used_by_table('public.test1') as A (viewname text);

#\h CREATE SEQUENCE                                  #查看创建序列的帮助

#create sequence test_seq start with 100;    #创建名为test_seq的序列

# \ds                                                                #通过\ds命令查看当前数据库中存在的序列

#select setval('test_seq',200);                         #通过设置test_seq的序列值为200

#select nextval('test_seq');                              #查看当前序列的下一个值

#select * from test_seq;                                  #查看当前序列的信息

# \h alter sequence;                                        #查看修改序列的帮助

# alter sequence test_seq start with 205;      #修改当前序列的开始值为205

# \h drop sequence;                                        #查看修改序列的帮助

# drop sequence test_seq;                             #删除当前序列

# show enable_seqscan;                                 #GP中默认进行序列扫描

# set enable_seqscan=off;                             #将序列扫描的方式关闭

备注:
作者:Shengming Zeng
博客:http://www.cnblogs.com/zengming/
GItHub:https://github.com/lovelifeming
严正声明:
1.由于本博客部分资源来自互联网,版权均归原作者所有。转载的目的是用于学术交流与讨论学习,将不对任何资源负法律责任。
2.若无意中侵犯到您的版权利益,请来信联系我,我会在收到信息后会尽快给予处理!
3.所有资源内容仅供学习交流之用,请勿用作商业用途,谢谢。
4.如有转发请注明出处,来源于http://www.cnblogs.com/zengming/ https://blog.csdn.net/Z645817,谢谢合作。

Greenplum使用教程的更多相关文章

  1. Greenplum 源码安装教程 —— 以 CentOS 平台为例

    Greenplum 源码安装教程 作者:Arthur_Qin 禾众 Greenplum 主体以及orca ( 新一代优化器 ) 的代码以可以从 Github 上下载.如果不打算查看代码,想下载编译好的 ...

  2. 『GreenPlum系列』GreenPlum 4节点集群安装(图文教程)

      目标架构如上图   一.硬件评估 cpu主频,核数推荐CPU核数与磁盘数的比例在12:12以上Instance上执行时只能利用一个CPU核资源进行计算,推荐高主频 内存容量 网络带宽重分布操作 R ...

  3. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  4. Greenplum 数据库架构分析

    Greenplum 数据库是最先进的分布式开源数据库技术,主要用来处理大规模的数据分析任务,包括数据仓库.商务智能(OLAP)和数据挖掘等.自2015年10月正式开源以来,受到国内外业内人士的广泛关注 ...

  5. Greenplum5.16.0 安装教程

    Greenplum5.16.0 安装教程 一.环境说明 1.1官方网站 Greenplum官方安装说明:https://gpdb.docs.pivotal.io/5160/install_guide/ ...

  6. 基于RedHat6.5的Greenplum环境配置

    安装Greenplum的时候遇到了很多坑,在此记录下 欢迎园友补充问题,共同研究解决! 安装说明 1.环境说明 操作系统:Red hat 6.5 64 位 2.配置规范 2.1基本说明 greenpl ...

  7. SqlServer 连接GreenPlum问题处理

    一.SQL SERVER.GREENPLUM 1. SSIS安装 ▶ 安装SQL SERVER 2005 数据库之后,运行SSIS工具,建立包,建立完成之后,新建工作流,双击工作流之后无法进行编辑,并 ...

  8. 开源大数据引擎:Greenplum 数据库架构分析

    Greenplum 数据库是最先进的分布式开源数据库技术,主要用来处理大规模的数据分析任务,包括数据仓库.商务智能(OLAP)和数据挖掘等.自2015年10月正式开源以来,受到国内外业内人士的广泛关注 ...

  9. 【转】【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    原文地址:http://www.cnblogs.com/baiboy/p/orc1.html 阅读目录 目录 集群概念介绍 什么是集群 为什么搭建数据库集群 数据库集群的分类 可扩展的分布式数据库架构 ...

随机推荐

  1. jquery jstree 插件的使用

    最近一个项目 需要用到jstree 这个jQuery插件,就研究了下,做目录树 菜单还是很强大的,下面对经常会用到几个用法做下说明. 1. 首先页面 引用 jquery.jstree 2. html ...

  2. JVM 内存设置大小(Xms Xmx PermSize MaxPermSize 区别)

    Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) sp ...

  3. day06-数字类型、字符串类型内置方法

    目录 数字类型内置方法 字符串类型内置方法 有序 or 无序 可变 or 不可变 数字类型内置方法 1. int()强制类型转化成整型 age_str = '18' # 定义字符串 age = int ...

  4. cstringlist

    CStringList类成员 构造 CStringList 构造一个空的CString对象列表   首/尾访问 GetHead 返回此列表(不能是空的)中头部的元素 GetTail 返回此列表(不能是 ...

  5. LINUX-查看进程内环境变量

    ps -ef find PID cat /proc/$PID/environ | grep ENV

  6. HDU-1864&&HDU-2602(01背包问题)

    DP-01背包问题例题 输入处理有点恶心人,不过处理完后就是简单的DP了 从头开始dp[i]表示从0开始到i的最优结果,最后从都边里dp数组,求得最大的报销额. 对于每个i都要从头维护最优结果.(二刷 ...

  7. Centos下安装mysql(二进制版)

    1.下载安装包,选择相应的平台.版本,比如,选择64位Linux平台下的MySQL二进制包“Linux-Generic (glibc 2.5)(x86,64-bit),Compressed” 如:#w ...

  8. 第六节:numpy之数组拼接

  9. 腾讯云,搭建nginx静态网站服务器

    搭建Http静态服务器环境 任务时间:15min ~ 30min 搭建静态网站,首先需要部署环境.下面的步骤,将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务. 安装 Nginx 在 ...

  10. protel99se 问题汇总(不定期更新)

    1.在PROTEL99SE中,怎样改变敷铜的线宽? 规则---manufacturing----polygon connect style 里面设置:或Power polygon connect st ...