GP简明使用手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GP服务启停
su - gpadmin
gpstart #正常启动
gpstop #正常关闭
gpstop -M fast #快速关闭
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命令行执行\q
参数查询
psql -c 'SHOW ALL;' -d gpdb
gpconfig --show max_connections
创建数据库
createdb -h localhost -p 5432 dhdw
创建GP文件系统
# 文件系统名
gpfsdw
# 子节点,视segment数创建目录
mkdir -p /gpfsdw/seg1
mkdir -p /gpfsdw/seg2
chown -R gpadmin:gpadmin /gpfsdw
# 主节点
mkdir -p /gpfsdw/master
chown -R gpadmin:gpadmin /gpfsdw
gpfilespace -o gpfilespace_config
gpfilespace -c gpfilespace_config
创建GP表空间
psql gpdb
create tablespace TBS_DW_DATA filespace gpfsdw;
SET default_tablespace = TBS_DW_DATA;
删除GP数据库
gpdeletesystem -d /gpmaster/gpseg-1 -f
查看segment配置
select * from gp_segment_configuration;
文件系统
select * from pg_filespace_entry;
磁盘、数据库空间
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;
表数据分布
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的操作统计
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;
队列
SELECT * FROM pg_resqueue_status;
加载(LOAD)数据到Greenplum数据库
gpfdist外部表
# 启动服务
gpfdist -d /share/txt -p 8081 –l /share/txt/gpfdist.log &
# 创建外部表,分隔符为’/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;
# 创建普通表
create table test select * from TD_APP_LOG_BUYER;
# 索引
# CREATE INDEX idx_test ON test USING bitmap (ip);
# 查询数据
select ip , count(*) from test group by ip order by count(*); gpload
# 创建控制文件
# 加载数据
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数据库卸载(UNLOAD)数据
gpfdist外部表
# 创建可写外部表
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);
# 写权限
GRANT INSERT ON writable_ext_table TO <name>;
# 写数据
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';
执行sql文件
psql gpdbname –f yoursqlfile.sql
或者psql登陆后执行
\i yoursqlfile.sql
如何杀掉greenplum、postgresql的会话进程
在linux命令行执行kill -s SIGTERM <procid>杀掉该会话的进程
用函数杀sql
对于查询SQL
select pg_cancel_backend(procpid);
其他SQL
select pg_terminate_backend(procpid);
调整Greenplum的SQL查询计划
在oracle中使用hint可以调整SQL的执行计划,在postgresql可以使用如下的方法进行调整
使用set<option> to off/on;调整查询计划,参数如下:
enable_seqscan是否走全表扫描
enable_hashjoin是否允许走hash连接
enable_nestloop是否允许走nestloop连接
enable_mergejoin是否允许走合并连接
enable_tidscan是否允许走tid扫描(类似oracle中的按rowid访问)
enable_bitmapscan是否允许走bitmap扫描
enable_hashagg是否允许走hash聚集(也就是做group by时)
enable_indexscan是否允许走索引
enable_sort是否允许走排序
constraint_exclusion是否允许走分区
Greenplum参数配置优化
# 查询参数
psql -c'SHOW ALL;' -d gpdb
gpconfig--show max_connections
# 修改参数配置命令
gpconfig-c <parameter name> -v <parameter value>
比如:gpconfig-c log_statement -v DDL
# 使参数生效
gpstop –r
# 修改默认搜索路径
# 默认dbtest
ALTERDATABASE dhgp SET search_path TO dbtest;
# 设置work_mem 64MB
ALTERDATABASE dhgp SET work_mem TO 65536;
另一种写法:SETwork_mem TO '64MB'
# 设置maintenance_work_mem 128MB
ALTER DATABASEdhgp SET maintenance_work_mem TO 131072; # 设置max_work_mem 4G
ALTERDATABASE dhgp SET max_work_mem TO 4194304;
# 设置statement_mem
ALTERDATABASE dhgp SET statement_mem TO '256MB';
# 12G,需要配合修改/etc/sysctl.conf kernel.shmmax
ALTERDATABASE dhgp SET effective_cache_size TO 1572864;
# 在各个节点的postgres.conf文件中配置,master和每个segment的可以使用的cpu 个数
Master:gp_resqueue_priority_cpucores_per_segment 8
Segment:2
# checkpoint_segments
32-256(512MB-4GB)
查看数据库表清单(包括临时表)PG_TABLES
主表与分区表pg_partitions
字段清单i nformation_schema.columns
视图 pg_views
字典schema : information_schema。