GreenPlum是一個關係型數據庫集羣.,它其實是由多個獨立的數據庫服務組合成的邏輯數據庫。GreenPlum是基於PostgreSQL(開源數據庫)的分佈式數據庫,它採用的是shared nothing架構(MPP Massively Parallel Processing,即大規模並行處理),主機、操做系統、內存、存儲都是節點本身控制,不存在着共享。它主要由master host,segment host,interconnect三大部分構成。 git
Master節點:客戶端訪問鏈接的認證,處理傳入的SQL語句,在segment之間分配工做負荷,協調每一個segment返回的結果,並把最終結果返回給客戶端。github
Segment節點主要作數據存儲和數據處理,用戶建立的索引和表被分發到各個子節點當中,每個子節點都包含了用戶數據的分片,而這些分片不存在重複的狀況。sql
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 #建立測試數據庫dom
$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; #查看錶結構
# \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
格式:普通視圖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
查詢哪些視圖引用了某張數據表
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,謝謝合做。