greenplum查询超时_greenplum常用命令 | 学步园

启动数据库服务

gpstart,系统会自检,并提示是否启动服务,选择y,启动服务

gpstart -a 则系统无任何提示,进行启动

gpstart -q 如果不希望屏幕输出

gpstart -h 具体的选项帮助说明

ps -ef|grep postgre 查看相关的服务进程

如何关闭数据库服务

gpstop

gpstop -M fast 想强行关闭服务

gpstop -u  重启系统

该工具提供了-t选项,增加允许的超时设置。这对系统关闭时存在大量回滚数据的情况非常有用(过去的默认超时是60秒)

gpstop -h 获取选项帮助

gpstate -s 获取服务状态的细节信息

如何连接数据库。

我们可以通过任何装有psql客户端的机器连接GP数据库,比如

psql -d template1 -U gpadmin -p 5432 -h mdw

其中-d指定了连接数据库的名称,-U指定了连接数据库的用户名,也称为角色,-p指定了连接使用的端口,默认值是5432,-h指定了master对外服务的主机名。

新的4.1版本中,他可以支持application_name参数,从而使我们可以方便的对数据库连接定位,进行问题诊断和性能调整。

在系统初始化的过程中,系统会创建一个称为gpadmin的数据库角色(用户),做为超级管理员。默认可以使用它进行登录。我们也可以自己创建新的用户。

比如从master上,以gpadmin用户登录,这可以通过操作系统实现身份认证,不需要密码。

psql -d template1

建立新用户

template1=:>create role ods with password 'ods' login;

我们从客户端,使用新添加的客户登录,可能系统会拒绝登录,这是因为GP提供了类似防火墙的机制,需要我们在master上通过配置文件指定允许哪些客户端,哪些客户登入

哪些数据库。

首先,登入master主机,在数据目录下,找到配置文件pg_hba.conf,我们可以用vi打开,对其进行编辑,其内容类似下面的信息

local    all         gpadmin,ods         ident

host     all         gpadmin,ods         127.0.0.1/28    trust

host     all         gpadmin,ods         192.168.10.30/32       trust

host     all         gpadmin,ods         192.168.10.32/32       trust

host     all         all             192.168.10.0/24        md5

我们可以在里面添加新的条目,比如最后一个条目允许所有192.168.10.0/24网段登录的所有用户,可以通过密码方式进行身份审核,登录所有数据库。修改这个配置文件后,需要通过gpstop -u 去reload变化的内容,才能生效。

创建用户sh, 并赋予它登录系统和创建数据库的权限

su - gpadmin

gpadmin@mdw:~> psql -d template1

psql (8.2.15)

Type "help" for help.

template1=# create role sh with password 'sh' login createdb;

创建数据库的句法如下

CREATE DATABASE name [ [WITH] [OWNER [=] dbowner]

[TEMPLATE [=] template]

[ENCODING [=] encoding]

[TABLESPACE [=] tablespace]

[CONNECTION LIMIT [=] connlimit ] ]

最简单的只要给个数据库名字就好了。比如

template1=> create database sales_history;

CREATE DATABASE

接下来可以,连接到建好的数据库上创建schema,如果不创建自己的schema,在建库时系统创建了一个叫做public的schema。在GP中,如果要跨schema访问对象,

必须使用schema做前缀,比如schema.table的形式。如果不加前缀默认查找当前schema。

template1=> \c sales_history

You are now connected to database "sales_history" as user "sh".

sales_history=> create schema sales_history ;

CREATE SCHEMA

如果要永久改变schema的访问顺序,用下面的语句

sales_history=> alter database sales_history set search_path to sales_history,public;

ALTER DATABASE

如果是改变当前客户端的schema 访问顺序

sales_history=> set search_path to sales_history;

SET

下面就可以建表了,注意一下映射关系,一般oracle number数据类型对应gp的numeric类型,oracle date数据类型对应gp的timestamp类型,oracle varchar2数据类型对应gp的varchar类型,另外,GP在建表的时候,还应该指定数据的分布方法。一种是HASH

CREATE TABLE SALES

(    PROD_ID numeric NOT NULL ,

CUST_ID numeric NOT NULL ,

TIME_ID DATE NOT NULL ,

CHANNEL_ID numeric NOT NULL ,

PROMO_ID numeric NOT NULL ,

QUANTITY_SOLD numeric(10,2) NOT NULL ,

AMOUNT_SOLD numeric(10,2) NOT NULL )

distributed by (prod_id,cust_id,time_id,channel_id,promo_id);

创建对应的外部表,访问导出CSV文件。使用GP的外部表,需要先把gpfdist这个工具(默认路径/usr/local/greenplum-db/bin)拷贝到存放csv文件的文件服务器上。启动gpfdist服务(类似一个http服务),比如文件在/stage/data目录的子目录下,我们可以启动它

nohup gpfdist -d /stage  -p 8081 -l gpfdist.log &

另外,要允许用户创建外部表,非则建外部表时会得到错误

ERROR:  permission denied: no privilege to create a readable gpfdist external table

修改配置文件,添加参数

gp_external_enable_exec = on   # enable external tables with EXECUTE.

gp_external_grant_privileges = on #enable create http/gpfdist for non su's

允许非超级管理员创建外部表,必须重启数据库服务,才能生效。

下面是创建外部表的句法,可以使用*作为通配符指定特定目录下的多个文件,这些文件也可以分布到多个文件服务器上,以提高数据的加载效率。

create external table sales_ext

(PROD_ID numeric,

CUST_ID numeric,

TIME_ID date,

CHANNEL_ID numeric ,

PROMO_ID numeric ,

QUANTITY_SOLD numeric(10,2),

AMOUNT_SOLD numeric(10,2))

LOCATION ('gpfdist://elt1:8081/sales/*')

FORMAT 'CSV'

log errors into err_sales_ext segment reject limit 7000000 rows;

接下来就可以使用子查询加载数据了

sales_history=> insert into sales select * from sales_ext;

NOTICE:  Found 70681 data formatting errors (70681 or more input rows). Rejected related input data.

INSERT 0 918843

sales_history=> select * from err_sales_ext;

sales_history=> select count(*) from sales;

count

--------

918843

(1 row)

insert into sales select * from sales_ext;

对于有问题的记录,加载过程中会抛到定义外部表的时指定的错误表中。

与其它数据库一样,在加载大量数据后,应该收集表的统计信息

sales_history=> vacuum analyze sales;

VACUUM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值