Greenplum使用简明手册
GP服務(wù)啟停
su - gpadmin
gpstart #正常啟動(dòng)
gpstop #正常關(guān)閉
gpstop -M fast #快速關(guān)閉
gpstop –r #重啟
gpstop –u #重新加載配置文件
登陸與退出Greenplum
#正常登陸
psql gpdb
psql -d gpdb -h gphostm -p 5432 -U gpadmin
#使用utility方式
PGOPTIONS="-c gp_session_role=utility" psql -h?-d dbname hostname -p port
#退出
在psql命令行執(zhí)行\(zhòng)q
參數(shù)查詢
psql -c 'SHOW ALL;' -d gpdb
gpconfig --show max_connections
創(chuàng)建數(shù)據(jù)庫(kù) createdb -h localhost -p 5432 dhdw
創(chuàng)建GP文件系統(tǒng)
# 文件系統(tǒng)名
gpfsdw
# 子節(jié)點(diǎn),視segment數(shù)創(chuàng)建目錄
mkdir -p /gpfsdw/seg1
mkdir -p /gpfsdw/seg2
chown -R gpadmin:gpadmin /gpfsdw
# 主節(jié)點(diǎn)
mkdir -p /gpfsdw/master
chown -R gpadmin:gpadmin /gpfsdw
gpfilespace -o gpfilespace_config
gpfilespace -c gpfilespace_config
創(chuàng)建GP表空間
psql gpdb
create tablespace TBS_DW_DATA filespace gpfsdw;
SET default_tablespace = TBS_DW_DATA;
刪除GP數(shù)據(jù)庫(kù) gpdeletesystem -d /gpmaster/gpseg-1 -f
查看segment配置 select * from gp_segment_configuration;
文件系統(tǒng) select * from pg_filespace_entry;
磁盤、數(shù)據(jù)庫(kù)空間
SELECT * FROM gp_toolkit.gp_disk_free ORDER BY dfsegment;
SELECT * FROM gp_toolkit.gp_size_of_database ORDER BY sodddatname;
日志
SELECT * FROM gp_toolkit.__gp_log_master_ext;
SELECT * FROM gp_toolkit.__gp_log_segment_ext;
表描述 /d+ <tablename>
表分析 VACUUM ANALYZE tablename;
表數(shù)據(jù)分布 SELECT gp_segment_id, count(*) FROM <table_name> GROUP BY gp_segment_id;
表占用空間
SELECT relname as name, sotdsize/1024/1024 as size_MB, sotdtoastsize as toast, sotdadditionalsize as other
???FROM gp_toolkit.gp_size_of_table_disk as sotd, pg_class
?WHERE sotd.sotdoid = pg_class.oid ORDER BY relname;
索引占用空間
SELECT soisize/1024/1024 as size_MB, relname as indexname
?FROM pg_class, gp_toolkit.gp_size_of_index
?WHERE pg_class.oid = gp_size_of_index.soioid
??AND pg_class.relkind='i';
OBJECT的操作統(tǒng)計(jì)
SELECT schemaname as schema, objname as table, usename as role, actionname as action, subtype as type, statime as time
?FROM pg_stat_operations
?WHERE objname = '<name>';
鎖
SELECT locktype, database, c.relname, l.relation, l.transactionid, l.transaction, l.pid, l.mode, l.granted, a.current_query
?FROM pg_locks l, pg_class c, pg_stat_activity a
?WHERE l.relation=c.oid
??AND l.pid=a.procpid
?ORDER BY c.relname;
隊(duì)列 SELECT * FROM pg_resqueue_status
查看指定數(shù)據(jù)庫(kù) select?pg_size_pretty(pg_database_size('<database_name>'));
所有數(shù)據(jù)庫(kù) select?datname,pg_size_pretty(pg_database_size(<database_name>))?from?pg_database;?
查看數(shù)據(jù)庫(kù)表清單(包括臨時(shí)表) pg_tables
主表與分區(qū)表 pg_partitions
字段清單 information_schema.columns
視圖 pg_views
字典 schema : information_schema
GP中查詢表和視圖清單,視圖的字段及其類型
查詢schema_name.view_name的字段及其類型:
??? select a.attname, pg_catalog.format_type(a.atttypid, a.atttypmod) as type,a.attnotnull
??? from pg_catalog.pg_attribute a,pg_catalog.pg_class c, pg_catalog.pg_namespace n
??? where? a.attrelid=c.oid
??? and c.relname='view_name'
??? and a.attnum>0 AND NOT a.attisdropped
??? and n.oid = c.relnamespace
??? and n.nspname='schema_name'
??? order by a.attnum
查詢指定schema下view的清單:
??? select c.relname
??? from pg_catalog.pg_class c, pg_catalog.pg_namespace n
??? where n.oid = c.relnamespace
??? and n.nspname='schema_name'
??? and? c.relkind='v'
查詢指定schema下所有table的清單:
??? select c.relname
??? from pg_catalog.pg_class c, pg_catalog.pg_namespace n
??? where n.oid = c.relnamespace
??? and n.nspname='schema_name'
??? and? c.relkind='r'
查詢指定schema下所有外部表的清單:
??? select c.relname
??? from pg_catalog.pg_class c, pg_catalog.pg_namespace n
??? where n.oid = c.relnamespace
??? and n.nspname='schema_name'
??? and? c.relkind='r'? and relstorage='x'
查詢指定schema下所有普通表的清單:
??? select c.relname
??? from pg_catalog.pg_class c, pg_catalog.pg_namespace n
??? where n.oid = c.relnamespace
??? and n.nspname='schema_name'
??? and? c.relkind='r'? and relstorage in ('h','a');
注意,relstorage字段取值“x”表示外部表,“h”表示heap表,“a”表示append-only表,“v”表示virtual表。
查詢指定schema_name下table_owner的表:
??? select * from
??? (
??? select c.relname, pg_catalog.pg_get_userbyid(c.relowner) as table_owner
??? from pg_catalog.pg_class c, pg_catalog.pg_namespace n
??? where n.oid = c.relnamespace
??? and n.nspname='schema_name'
??? ) t where t.table_owner = 'table_owner';
查詢指定指定table_owner的所有普通表:
??????? select * from
??????? (
??????? select n.nspname, c.relname, pg_catalog.pg_get_userbyid(c.relowner) as table_owner
??????? from pg_catalog.pg_class c, pg_catalog.pg_namespace n
??????? where n.oid = c.relnamespace and? c.relkind='r' and relstorage in ('h', 'a')
??????? ) t where t.table_owner = 'table_owner';
?
加載(LOAD)數(shù)據(jù)到Greenplum數(shù)據(jù)庫(kù)
gpfdist外部表
# 啟動(dòng)服務(wù)
gpfdist -d /share/txt -p 8081 –l /share/txt/gpfdist.log &
# 創(chuàng)建外部表,分隔符為’/t’
drop EXTERNAL TABLE TD_APP_LOG_BUYER;
CREATE EXTERNAL TABLE TD_APP_LOG_BUYER (
?IP???????? text,
?ACCESSTIME text,
?REQMETHOD? text,
?URL??????? text,
?STATUSCODE int,
?REF??????? text,
?name?????? text,
?VID??????? text)
LOCATION ('gpfdist://gphostm:8081/xxx.txt')
FORMAT 'TEXT' (DELIMITER E'/t'
FILL MISSING FIELDS) SEGMENT REJECT LIMIT 1 percent;
# 創(chuàng)建普通表
create table test select * from TD_APP_LOG_BUYER;
# 索引
# CREATE INDEX idx_test ON test USING bitmap (ip);
# 查詢數(shù)據(jù)
select ip , count(*) from test group by ip order by count(*);
gpload
# 創(chuàng)建控制文件
# 加載數(shù)據(jù)
gpload -f my_load.yml
copy
COPY country FROM '/data/gpdb/country_data'
?WITH DELIMITER '|' LOG ERRORS INTO err_country
?SEGMENT REJECT LIMIT 10 ROWS;
從Greenplum數(shù)據(jù)庫(kù)卸載(UNLOAD)數(shù)據(jù)
gpfdist外部表
# 創(chuàng)建可寫外部表
CREATE WRITABLE EXTERNAL TABLE unload_expenses
( LIKE expenses )
LOCATION ('gpfdist://etlhost-1:8081/expenses1.out',
'gpfdist://etlhost-2:8081/expenses2.out')
FORMAT 'TEXT' (DELIMITER ',')
DISTRIBUTED BY (exp_id);
# 寫權(quán)限
GRANT INSERT ON writable_ext_table TO <name>;
# 寫數(shù)據(jù)
INSERT INTO writable_ext_table SELECT * FROM regular_table;
copy
COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/home/gpadmin/a_list_countries.out';
執(zhí)行sql文件
psql gpdbname –f yoursqlfile.sql
或者psql登陸后執(zhí)行
\i yoursqlfile.sql
如何殺掉greenplum、postgresql的會(huì)話進(jìn)程
在linux命令行執(zhí)行kill -s SIGTERM <procid>殺掉該會(huì)話的進(jìn)程
用函數(shù)殺sql
對(duì)于查詢SQL
select pg_cancel_backend(procpid);
其他SQL
select pg_terminate_backend(procpid);
調(diào)整Greenplum的SQL查詢計(jì)劃
在oracle中使用hint可以調(diào)整SQL的執(zhí)行計(jì)劃,在postgresql可以使用如下的方法進(jìn)行調(diào)整
使用set<option> to off/on;調(diào)整查詢計(jì)劃,參數(shù)如下:
enable_seqscan 是否走全表掃描
enable_hashjoin 是否允許走
hash 連接
enable_nestloop 是否允許走
nestloo 連接
enable_mergejoin 是否允許走合并連接
enable_tidscan 是否允許走tid 掃描(類似oracle中的按rowid訪問)
enable_bitmapscan 是否允許走
bitmap 掃描
enable_hashagg 是否允許走
hash 聚集(也就是做group by時(shí))
enable_indexscan 是否允許走索引
enable_sort 是否允許走排序
constraint_exclusion 是否允許走分區(qū)
轉(zhuǎn)載于:https://www.cnblogs.com/zzjhn/p/5912383.html
總結(jié)
以上是生活随笔為你收集整理的Greenplum使用简明手册的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xcap使用教程--创建、发送和分析报文
- 下一篇: 0920