Greenplum使用簡明手冊


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

查看指定數據庫 select pg_size_pretty(pg_database_size('<database_name>'));

所有數據庫 select datname,pg_size_pretty(pg_database_size(<database_name>)) from pg_database; 

查看數據庫表清單(包括臨時表) pg_tables
主表與分區表 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)數據到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 是否允許走
nestloo 連接
enable_mergejoin 是否允許走合並連接
enable_tidscan 是否允許走tid 掃描(類似oracle中的按rowid訪問)
enable_bitmapscan 是否允許走
bitmap 掃描
enable_hashagg 是否允許走
hash 聚集(也就是做group by時)
enable_indexscan 是否允許走索引
enable_sort 是否允許走排序
constraint_exclusion 是否允許走分區


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM