GreenPlum-常用数据库命令
greenplum where exists语句
greenplum where exists语句在Greenplum数据库中,WHERE EXISTS 语句用于检查子查询是否返回任何行。
如果子查询返回至少一行结果,则主查询中的条件被认为是满足的。
以下是一个示例,演示了在Greenplum数据库中使用WHERE EXISTS 的基本语法:SELECT column1, column2, ...FROM your_tableWHERE EXISTS (SELECT 1FROM another_tableWHERE condition);在这个例子中,your_table 是主查询中的表,another_table 是子查询中的表,condition 是用于指定匹配条件的表达式。
如果子查询返回任何行,主查询中的条件就被认为是满足的,从而选择相应的行。
请注意,关键是使用 SELECT 1,而不是 SELECT *,因为我们只关心是否存在结果,而不关心具体的列值。
这有助于提高性能,因为它减少了子查询返回的数据量。
以下是一个更具体的示例:SELECT employee_id, employee_nameFROM employeesWHERE EXISTS (SELECT 1FROM projectsWHERE projects.employee_id = employees.employee_id AND projects.status = 'In Progress');在这个例子中,主查询选择了员工表中的某些列,但只有当子查询中的项目表中存在与员工关联的项目,并且项目的状态为'In Progress' 时,才会选择该员工。
greenplum中分区表语法
greenplum中分区表语法摘要:I.简介- 介绍Greenplum 数据库- 介绍分区表的概念和作用II.Greenplum 中分区表的语法- 分区表的定义- 分区表的属性- 分区表的创建语法- 分区表的数据插入、更新和删除语法III.分区表的优化- 分析分区表的性能- 优化分区表的建议IV.总结- 回顾分区表的重要性和作用- 强调分区表的合理使用和优化正文:I.简介Greenplum 是一个高性能、可扩展的大数据处理数据库,广泛应用于海量数据的存储和分析。
分区表是Greenplum 中一种特殊的表,可以根据数据的特性和业务需求将数据进行分区,从而提高查询效率和数据处理的灵活性。
II.Greenplum 中分区表的语法A.分区表的定义分区表是一个包含多个分区的表,每个分区可以包含不同的数据。
分区表使用PARTITION BY 子句定义分区,可以依据一个或多个列对数据进行分区。
B.分区表的属性分区表具有以下属性:1.分区数量:根据业务需求和数据量设定分区的数量。
2.分区方式:根据数据特性和查询需求选择合适的分区方式,如RANGE、LIST 等。
3.分区列:选择一个或多个列作为分区依据。
4.分区边界:指定分区的起始和结束值。
C.分区表的创建语法创建分区表的语法如下:```CREATE TABLE table_name (column1 data_type,column2 data_type,...)PARTITION BY (column_name data_type)(PARTITION partition_name VALUES LESS THAN (value1) TABLESPACE tablespace_name;PARTITION partition_name VALUES LESS THAN (value2) TABLESPACE tablespace_name;...);```D.分区表的数据插入、更新和删除语法1.插入数据:使用INSERT INTO 语句插入数据。
greenplum数据字典
greenplum是基于postgresql开发的分布式数据库,里面大部分的数据字典是一样的。
我们在维护gp的时候对gp的数据字典比较熟悉,特此分享给大家。
在这里不会详细介绍每个字典的内容,只会介绍常见的应用以及一些已经封装好了的函数。
具体的介绍大家可以去看postgresql的中文文档,里面有详细的解释。
1.postgresql中,所有数据库的对象都是用oid连接在一起的。
这样子会造成我们在理解数据字典的时候有一些不知所措。
下面介绍几个函数,可以简化很多的操作。
最常用的是regclass,关联数据字典的oid,使用方法如下:aligputf8=# select 1259::regclass;regclass———-pg_class(1 row)aligputf8=# select oid,relname from pg_class where oid=’pg_class’::regclass;oid | relname——+———-1259 | pg_class(1 row)这样子就可以通过regclass寻找一个表的信息,就不用去关联 pg_class跟pg_namespace(记录schema信息)了。
比较方便。
同样的,其他几个类型也是一样的用法,如regproc(regprocedure)是跟pg_proc(保存普通函数的命令)关联的。
regoper(regoperator)是跟pg_operator(操作符)的oid关联的。
Eg:aligputf8=# select oid::regoper,oid::regoperator,oid,oprname from pg_operator limit 1;oid | oid | oid | oprname————–+——————-+—–+———pg_catalog.= | =(integer,bigint) | 15 | =(1 row)aligputf8=# select oid::regproc,oid::regprocedure,oid,proname from pg_proc limit 1;oid | oid | oid | proname——–+—————–+——+———boolin | boolin(cstring) | 1242 | boolin(1 row)下面给给出如何使用regclass的例子。
greenplum regexp_replace用法
Greenplum 数据库的`regexp_replace` 函数是一个非常有用的工具,用于在字符串中执行正则表达式匹配,并将匹配的结果替换为新的字符串。
这个函数在数据清洗和文本处理中特别有用。
`regexp_replace` 函数的语法如下:```sqlregexp_replace(string, pattern, replacement [, flags])```* `string`:要进行处理的字符串。
* `pattern`:正则表达式模式,用于匹配要替换的字符串部分。
* `replacement`:替换匹配部分的字符串。
* `flags`(可选):控制匹配行为的标志。
可用的标志包括:+ `i`:执行不区分大小写的匹配。
+ `c`:执行区分大小写的匹配。
+ `n`:点号(.)不匹配换行符。
+ `m`:执行多行模式匹配。
+ `x`:启用扩展模式,忽略正则表达式中的空白字符。
这里有一些使用`regexp_replace` 的例子:1. 将字符串中的所有"apple" 替换为"orange":```sqlSELECT regexp_replace('I like apple pie.', 'apple', 'orange');```输出结果为'I like orange pie.'2. 使用不区分大小写的替换:```sqlSELECT regexp_replace('I LIKE APPLES AND BANANAS.', 'apple','orange', 'i');```输出结果为'I LIKE ORANGES AND BANANAS.'3. 使用多行模式替换:```sqlSELECT regexp_replace('apple\nbanana\neggplant', 'a', 'o', 'm');```输出结果为'ooloo\nbonono\neggplot',注意"banana" 的第一个字母没有改变。
greenplumn数据库查询语句示例
一、介绍Greenplumn是一个并行化的关系数据库管理系统,它是PostgreSQL的一个扩展,可以用于处理大规模数据。
在Greenplumn数据库中,我们可以通过SQL语句来进行数据查询和操作。
下面将通过示例介绍一些常用的Greenplumn数据库查询语句。
二、SELECT语句示例1. 查询所有数据```sqlSELECT * FROM table_name;```以上语句将返回table_name表中的所有数据。
2. 查询指定字段数据```sqlSELECT column1, column2 FROM table_name;```以上语句将返回table_name表中的column1和column2字段的数据。
3. 查询并排序```sqlSELECT * FROM table_name ORDER BY column_name DESC; ```以上语句将返回table_name表中的所有数据,并按照column_name字段降序排序。
4. 查询并限制结果集```sqlSELECT * FROM table_name LIMIT 10;```以上语句将返回table_name表中的前10条数据。
5. 使用聚合函数```sqlSELECT COUNT(column_name) FROM table_name;```以上语句将返回table_name表中column_name字段的数量。
三、INSERT语句示例1. 插入单行数据```sqlINSERT INTO table_name (column1, column2) VALUES (value1,value2);```以上语句将在table_name表中插入一行数据,值为value1和value2。
2. 插入多行数据```sqlINSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), (value5, value6);```以上语句将在table_name表中插入多行数据。
Greenplum常用命令、函数
Greenplum常⽤命令、函数Greenplum常⽤查询命令#查看test_bd事务(即数据库)下的所有表名包含 user 的表信息SELECT UPPER(A.SCHEMANAME) AS SCHEMANAME, UPPER(A.TABLENAME) AS TABLENAME,D.ATTRELID,D.ATTRELID :: regclass,UPPER(D.ATTNAME) AS ATTNAME,REPLACE(REPLACE(REPLACE(FORMAT_TYPE(D.ATTTYPID, D.ATTTYPMOD),'numeric','NUMBER'),'character varying','VARCHAR2'),'date','DATE') AS DATA_TYPE,E.DESCRIPTIONFROM PG_TABLES AS AINNER JOIN PG_CLASS AS B ON A.TABLENAME = B.RELNAMELEFT JOIN PG_CATALOG.PG_DESCRIPTION AS E ON B.OID = E.OBJOIDLEFT JOIN PG_CATALOG.PG_ATTRIBUTE AS D ON D.ATTRELID = E.OBJOID AND D.ATTNUM = E.OBJSUBIDWHERE SCHEMANAME ='test_bd'AND A.TABLENAME LIKE'%user%'AND D.ATTNUM >0ORDER BY A .TABLENAME,D.ATTNUM select pg_size_pretty(pg_database_size('gp_db')); #查看gp数据库⼤⼩ select gp_segment_id,count(*) from db_name.tb_name group by gp_segment_id; #查看数据分布情况1.创建数据库 createdb test_db;2.删除数据库 dropdb test_db;3.创建模式 create schema myschema;4.删除模式 drop schema myschema;5.创建⽤户 create user user_name with password '123456' ;6.删除⽤户 drop user user_name;7.查看系统⽤户信息 select usename from pg_user;8.查看版本信息 select version();9.打开psql交互⼯具 psql name_db;10.执⾏sql⽂件 mydb=> \i basics.sql \i 命令从指定的⽂件中读取命令。
greenplum hint用法
greenplum hint用法Greenplum是一种基于PostgreSQL的分布式数据库管理系统,它可以在多个节点上同时处理数据,从而加快了数据的处理速度。
而在Greenplum中,我们可以使用hint来优化我们的查询操作,使Greenplum更好地利用集群资源,提高整个集群的查询效率。
什么是hint?hint是一种在Greenplum中可以使用的调优技巧,它的作用是告诉Greenplum如何执行查询来达到更好的性能。
我们可以在SQL语句中加入特殊的注释来指定hint,从而改变Greenplum执行查询的方式。
Greenplum支持两种hint类型:Query Hints和Plan Hints。
Query HintsQuery Hints是指那些在查询语句中添加的注释,它可以改变Greenplum中查询语句的优化策略和执行计划。
以下是一些常用的Query Hints:1. /*+ MAx(variant=hash) */:使用hash join算法连接表变体。
2. /*+set_dop(4) */:指定查询的并行度为4。
3. /*+ gathered */:强制Greenplum在执行聚合函数之前将所有数据收集到单个节点上,以便在单个节点上执行聚合函数。
4. /* nolimit */:不限制查询结果的行数。
Plan Hints1. SET OPTIMIZER = ON:启用查询优化器。
使用hint的三个原则在使用hint之前,我们需要了解以下三个原则:1. 尽量不使用hinthint虽然可以提高查询性能,但是它更像是一种紧急情况下的解决方案。
出现性能问题时,我们应该首先通过SQL优化器尝试解决问题,而不是使用hint。
2. 只在性能瓶颈出现时使用hint如果查询速度有问题,我们应该先使用Greenplum自带的性能分析工具进行诊断,找出瓶颈所在的地方。
如果瓶颈确实在查询语句上,再考虑使用hint优化。
gp简易维护
Greenplum 日常简明维护手册1. 数据库启动:gpstart 提示选择Y…常用参数: -a : 直接启动,不提示终端用户输入确认-q : 不希望屏幕输出-m:只启动master 实例,主要在故障处理时使用-R:只启动数据库在受限模式,禁止非超级用户登陆.-y:启动数据,但不启动standby启动完毕可使用gpstate查看数据库状态2. 数据库停止:gpstop 提示选择Y…常用参数:-a:直接停止,不提示终端用户输入确认-m:只停止master 实例,与gpstart –m 对应使用-f(-m faster):停止数据库,中断所有数据库连接,回滚正在运行的事务-u:不停止数据库,只加载pg_hba.conf 和postgresql.conf中运行时参数,当改动参数配置时候使用。
关闭完毕后可使用gpssh控制所有服务器查看postgres进程是否已经都不存在,下面命令显示为1则表明数据库所有进程已经关闭完毕.gpadmin@dsszbyz-dw6-mst01:~> gpssh -f host_all=> ps -ef|grep postgres |wc -l[ sdw1] 1[sdw2] 1[ mdw] 1[ sdw3] 1[ smdw] 1[ sdw4] 1[ ftp1] 1=>exit3. 登陆数据库:psql登录数据库方式:psql –d 数据库名–u 用户名可以先使用psql -d template1登陆默认实例,然后使用select * from pg_database;查看已经安装的数据库名,然后登陆相应数据库。
退出psql 使用\q.使用应用模式访问单个数据实例():PGOPTIONS='-c gp_session_role=utility' psql template1 -p 54324. 查看实例配置和状态:gpstate常用参数:-c:显示primary instance和mirror instance的对应关系-m:显示mirror的状态-f:显示standby的状态(是否配置,是否同步)-e:显示错误节点的详细信息。
Greenplum数据库通过sql查询表结构,拼装建表语句
Greenplum数据库通过sql查询表结构,拼装建表语句Greenplum数据库通过sql查询表结构,拼装建表语句在greenplum中pg_catalog是存储数据库基本元数据的表,information_schema ⾥包含了⼤量的视图,实现了类似mysql中information_schema ⽐较易读的数据库元数据管理的功能。
greenplum 的pg_catalog 库包含的数据表基本都⽤oid关联,其中oid是全局id,最⼤42亿,可重置,也可循环使⽤。
1,查询表结构selectattname, -- 字段名typname,-- 类型CASE WHEN pg_truetypmod =-1/* default typmod */THEN nullWHEN pg_truetypid IN (1042, 1043) /* char, varchar */THEN pg_truetypmod -4WHEN pg_truetypid IN (1560, 1562) /* bit, varbit */THEN pg_truetypmodELSE null end type_max_length, -- 获取变长类型最⼤长度is_null, -- 是否空default_data, -- 默认值isunique, -- 是否唯⼀索引isprimary, -- 是否主键is_index, --是否索引distribution, -- 是否分布键description -- 注释from(SELECTt1.attname,t2.typname,case when t1.attnotnull=true then'Y'else''end is_null ,t3.description,t4.adbin as default_data, -- 默认值case when t5.attrnums is not null then'Y'else null end distribution, -- 分布键t6.indisunique isunique,t6.indisprimary isprimary,case when t6.indkey is not null then'Y'else null end is_index,t1.attnum, -- 字段位置顺序CASE WHEN t2.typtype ='d'THEN t2.typbasetype ELSE t1.atttypid END pg_truetypid,CASE WHEN t2.typtype ='d'THEN t2.typtypmod ELSE t1.atttypmod END pg_truetypmodFROMpg_attribute t1 -- 属性left join pg_type t2 on t1.atttypid = t2.oid -- 类型left join "pg_catalog"."pg_description" t3 on t1.attrelid=t3.objoid and t3.objsubid = t1.attnum -- 注释left join pg_attrdef t4 on t4.adrelid = t1.attrelid AND t4.adnum = t1.attnum -- 默认值left join gp_distribution_policy t5 on t5.localoid = t1.attrelid and t1.attnum =any(t5.attrnums) -- 分布键left join pg_index t6 on t6.indrelid=t1.attrelid and t1.attnum =any(t6.indkey) -- 索引,主键等WHEREt1.attnum >0AND t1.attisdropped <>'t'and t1.attrelid='table_schema.table_name'::regclass) ttorder by attnum;2,简洁版SELECTt1.attname,t2.typname,format_type (t1.atttypid, t1.atttypmod) AS TYPE,case when t1.attnotnull=true then'is not null 'else null end is_null ,col_description (t1.attrelid, t1.attnum) AS comment,t4.adbin as default_attr, -- 默认值case when t5.attrnums is not null then'Y'else null end distribution,end is_index,t1.attnum -- 字段位置顺序FROMpg_attribute t1 -- 属性left join pg_type t2 on t1.atttypid = t2.oid -- 类型left join pg_attrdef t4 on t4.adrelid = t1.attrelid AND t4.adnum = t1.attnum -- 默认值left join gp_distribution_policy t5 on t5.localoid = t1.attrelid and t1.attnum =any(t5.attrnums)left join pg_index t6 on t6.indrelid=t1.attrelid and t1.attnum =any(t6.indkey)WHEREt1.attnum >0AND t1.attisdropped <>'t'and t1.attrelid='resumes.base_common'::regclassorder by attnum;。
GreenPlum-数据存储目录迁移及常用操作
GreenPlum-数据存储⽬录迁移及常⽤操作⼀、环境介绍Greenplum5 3节点集群,Centos7.2虚拟机,⼆、需求因为/home⽬录磁盘空间已满,需要将Greenplum的数据存储⽬录转移到新的分区/opt⽬录下,虚拟机磁盘管理没有⽤LVM逻辑卷管理,⽆法动态扩容/home。
三、解决⽅案⼀般Greenplum不⽀持移动它的⽬录,但是可以通过以下两种⽅案实现Greenplum的数据存储⽬录的更改:1.移动⽬录并在其旧位置创建符号链接到新位置。
例如:#如果以前使⽤"/home/data/master"⽬录,需要移动到"/opt/data2/master",移动前备份mv /home/data/master /opt/data2/master#则可以⽤符号链接"/data/master - >/data2/master",创建软链接ln -s /opt/data2/master /home/data/master#这⾥讲解下软硬连接的区别:ln -s and ln硬连接(ln):⽂件名就相当于⼀个硬连接(指针),当为⼀个⽂件再建⽴⼀个硬连接后相当于⼜增加了⼀个指向⽂件存储地的指针,当原⽂件名⽂件删除后,新建硬连接依旧可以访问数据。
软连接(ln -s):当原⽂件名⽂件被删除后,软连接失效。
软硬连接都不会增加存储⼤⼩,这⾥使⽤软连接是因为硬连接⽆法跨分区建⽴。
2.如果为测试系统,不考虑数据。
使⽤“gpdeletesystem”删除旧系统并在新⽬录中重新初始化它四、常⽤操作重置环境:解决不能解决的⼀系列问题1.删除主节点中gpdata下的master与⽂件存储⽬录,副节点也同样删除⽂件存储⽬录。
2.切换gpadmin⽤户,配置.bash_profile环境,例如:source /opt/greenplum/greenplum-db/greenplum_path.shexport MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1export PGPORT=5432export PGDATABASE=postgres #默认进⼊的dbsource .bash_profile3.查看初始化init脚本是否正确4.初始化数据库,node4为master的备份节点,这⾥若不成功则配置有错。
gp导出表结构
gp导出表结构
在GP(Greenplum)数据库中,您可以使用以下命令导出表结构:
1. 如果您只需要导出单个表的结构,可以使用以下命令:
sql
pg_dump -t tablename -s databasename > structure.sql 其中,`tablename`是要导出结构的表名,`databasename`是包含该表的数据库名。
这将把表结构以SQL语句的形式保存到名为`structure.sql`的文件中。
2. 如果您需要导出整个数据库的所有表结构,可以使用以下命令:
sql
pg_dump -s databasename > structure.sql
这将把整个数据库的所有表结构以SQL语句的形式保存到`structure.sql`文件中。
请确保在执行上述命令之前,您具有适当的权限以及足够的磁盘空间来保存导出的结构文件。
greenplum 语法
greenplum 语法Greenplum是一种基于PostgreSQL的高性能、可扩展的关系型数据库管理系统。
它以并行处理和分布式架构为基础,支持大规模数据存储和查询,适用于数据仓库和商业智能应用。
下面介绍一些 Greenplum 常用的 SQL 语法:1. 创建数据库:CREATE DATABASE database_name;2. 创建表:CREATE TABLE table_name (column1 datatype,column2 datatype,column3 datatype,.....);3. 插入数据:INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...);4. 查询数据:SELECT column1, column2,..... FROM table_name WHERE condition;5. 更新数据:UPDATE table_name SET column1 = value1, column2 =value2,.... WHERE condition;6. 删除数据:DELETE FROM table_name WHERE condition;7. 创建索引:CREATE INDEX index_name ON table_name (column1,column2,....);8. 删除索引:DROP INDEX index_name;9. 创建视图:CREATE VIEW view_name AS SELECT column1, column2,.... FROM table_name WHERE condition;10. 删除视图:DROP VIEW view_name;11. 创建函数:CREATE FUNCTION function_name (argument_type,argument_type,....) RETURNS return_type AS $$function_body;$$ LANGUAGE plpgsql;12. 删除函数:DROP FUNCTION function_name (argument_type,argument_type,....);以上是 Greenplum 常用的 SQL 语法,通过学习这些语法可以更加熟练地操作数据库。
GREENPLUM介绍之数据库管理(四)-创建数据库和用户管理
GREENP LUM介绍之数据库管理(四)-创建数据库和用户管理上一篇/ 下一篇 2011-04-08 15:09:01 / 个人分类:G REENP LUM 查看(82 )/ 评论( 1 )/ 评分( 5 /0 ) GREEN PLUM与ORACL E一样有着完全独立于操作系统的用户管理系统,以及权限管理系统。
首先我们介绍一下GP中的数据库。
在GP初始化系统后,G P会自动创建出三个数据库pos tgre,templ ate0,templ ate1.其中p ostgr e用作系统内部数据的存放,我们既不要删除它,也不要修改它。
templ ate1是系统默认的数据,我们创建数据库时可以以t empla te1为模板,创建新的数据库。
所以,如果有不希望其它数据库继承的对象,就不要在数据库te mplat e1中进行创建。
G P中创建数据库的语法非常简单,句法如下CREA TE DA TABAS E new nameUSING TEMP LATEtmpla tedbn ame;速度非常快,这个过程中系统会生成相应的字典信息。
如果没有指定usi ng te mplat e子句,系统就使用t empla te1数据库作为模板创建新数据库。
我们也可以其它数据库为模板,创建新的数据库。
temp late0数据库是创建temp late1的模板,一般我们也不使用它创建应用对象。
GP允许在一个GP SERV ER中创建多个DAT ABASE。
但是一个DATAB ASE只能属于一个S ERVER。
一个连接在同一时间点只能访问一个数据库。
GP中也有SC HEMA的概念。
greenplum minus 语句
greenplum minus 语句MINUS是SQL 查询语言中的一种集合运算符,用于从一个查询结果中减去另一个查询结果。
在Greenplum 数据库中,MINUS不是标准SQL 的一部分,而是由一些数据库系统提供的扩展。
Greenplum 使用EXCEPT关键字来实现与MINUS类似的功能。
下面是一个关于Greenplum 数据库中EXCEPT的详细解释:1. EXCEPT 语法EXCEPT用于返回两个查询的不同之处,即从第一个查询结果中减去与第二个查询结果相同的部分。
sql-- 语法SELECT column1, column2, ...FROM table1EXCEPTSELECT column1, column2, ...FROM table2;•column1, column2, ...: 要查询的列。
•table1: 第一个查询的表。
•table2: 第二个查询的表。
2. 示例假设有两个表,分别是employees1和employees2,它们包含相同的列(例如,employee_id、first_name、last_name)。
我们想要找到只在employees1中出现而不在employees2中出现的员工。
sql-- 查找只在employees1 中出现而不在employees2 中出现的员工SELECT employee_id, first_name, last_nameFROM employees1EXCEPTSELECT employee_id, first_name, last_nameFROM employees2;这个查询返回的结果将包含只在employees1中存在而在employees2中不存在的员工记录。
3. 注意事项•查询的列数和数据类型必须相同。
•EXCEPT默认会删除重复的行,如果需要包含重复的行,可以使用ALL修饰符,即EXCEPT ALL。
•查询结果的列名是由第一个查询的列名决定的,可以使用列别名来修改。
greenplum基本操作及管理命令
greenplum基本操作及管理命令第1章系统管理 1.1 GP服务启停 su - gpadmingpstart #正常启动gpstop #正常关闭gpstop -M fast #快速关闭gpstop –r #重启gpstop –u #重新加载配置文件 1.2 登陆 psql gpdbpsql -d gpdb -h gphostm -p 5432 -U gpadmin 1.3 查看segment配置 select * from gp_segment_configuration; 1.4 文件系统 select * from pg_filespace_entry; 1.5 列出所有数据库 psql –l 1.6 行表库最大尺寸一个数据库最大尺寸无限制已存在有32TB 的数据库一个表的最大尺寸 32 TB一行记录的最大尺寸 1.6 TB一个字段的最大尺寸? 1 GB一个表里最大行数无限制一个表里最大列数 250-1600 与列类型有关一个表里的最大索引数量无限制当然实际上没有真正的无限制还是要受可用磁盘空间、可用内存/交换区的制约。
事实上当这些数值变得异常地大时系统性能也会受很大影响。
表的最大尺寸32 TB 不需要操作系统对大文件的支持。
大表用多个 1 GB 的文件存储因此文件系统尺寸的限制是不重要的。
如果缺省的块大小增长到32K 最大的表尺寸和最大列数还可以增加到四倍 1.7 存储空间一个 Postgres 数据库存储一个文本文件所占用的空间最多可能需要相当于这个文本文件自身大小5倍的磁盘空间。
第2章 Psql操作 2.1 创建/删除用户创建用户createuser [-a] [-A] [-d] [-D] [-e] [-P] [-h 主机名] [-p port] 用户名参数说明[-a]允许创建其他用户相当于创建一个超级用户[-A]不允许此用户创建其他用户[-d]允许此用户创建数据库[-D]不允许此用户创建数据库[-e]将执行过程显示到Shell上[-P]创建用户时同时设置密码[-h 主机名]为某个主机上的Postgres创建用户[-p port]与-h参数一同使用指定主机的端口。
greenplum 语法
greenplum 语法Greenplum是一个分布式数据库管理系统,它支持SQL语言进行数据的查询、插入、更新和删除等操作。
本文将介绍Greenplum的基本语法和常用操作。
一、基本语法1. 创建数据库CREATE DATABASE dbname;2. 删除数据库DROP DATABASE dbname;3. 连接数据库c dbname;4. 创建表格CREATE TABLE tablename (column1 datatype,column2 datatype,column3 datatype,.....);5. 删除表格DROP TABLE tablename;6. 插入数据INSERT INTO tablename (column1, column2, column3, ....)VALUES (value1, value2, value3, .....);7. 查询数据SELECT column1, column2, ....FROM tablenameWHERE condition;8. 更新数据UPDATE tablenameSET column1 = value1, column2 = value2, ....WHERE condition;9. 删除数据DELETE FROM tablenameWHERE condition;二、常用操作1. 聚合函数聚合函数用于对数据进行计算,包括SUM、AVG、COUNT、MAX和MIN等。
SELECT SUM(column) FROM tablename;2. 排序排序用于对数据进行排序,包括ASC(升序)和DESC(降序)。
SELECT column1, column2, ....FROM tablenameORDER BY column1 ASC;3. 分组分组用于将数据按照某个字段进行分组,可以配合聚合函数进行计算。
SELECT column1, SUM(column2)FROM tablenameGROUP BY column1;4. 联结联结用于将两个或多个表格中的数据进行联合。
GreenPlumpostgrescopy命令导出导入数据
GreenPlumpostgrescopy命令导出导⼊数据⼀、COPY命令简单实⽤1、copy在postgres与GreenPlum介绍1.1 postgrespostgres的COPY命令可以快速的导出/导⼊数据到postgresql数据库中,⽀持常⽤的⽂件格式,如:txt、sql、csv、压缩⽂件、⼆进制格式等。
特别适合批量导出和导⼊数据,速度⽐较快。
COPY TO把⼀个表的所有内容都拷贝到⼀个⽂件;COPY FROM从⼀个⽂件⾥拷贝数据到⼀个表⾥(把数据附加到表中已经存在的内容⾥)。
注意:COPY只能⽤于表,不能⽤于视图。
1.2 GreenPlum对于数据的加载,GreenPlum数据库也提供了copy⼯具(源于PostgreSQL数据库),使⽤⽅法同postgres数据库的copy命令。
copy命令⽀持⽂件与表之间的数据的导⼊和导出。
注意:使⽤copy命令进⾏数据导⼊时,数据需要经过Master节点分发到Segment节点;同样使⽤copy命令进⾏数据卸载,数据也需要由Segment发送到Master节点,由Master节点汇总后再写⼊外部⽂件。
这样就限制了数据加载与卸载的效率,但是数据量较⼩的情况下,copy命令就⾮常⽅便。
当数据量⽐较⼤时可以考虑使⽤GreenPlum的gpload⼯具来导⼊。
2. 使⽤copy命令导出/导⼊数据的步骤COPY aa_test FROM '/tmp/data/test.csv' csv HEADER NULL '';通常使⽤psql⼯具来进⾏数据的导出和导⼊。
2.1 准备⼯作(1) 创建⽤于存放导出⽂件(或待导⼊⽂件)的⽬录,并赋予权限;注意:使⽤root⽤户# 创建⽬录[root@node8 /]# mkdir /tmp/data# 赋予权限[root@node8 /]# chmod 777 /tmp/data/12345(2) 进⼊psql并切换数据库注意:如果是postgres数据库,则切换到postgres⽤户;如果是GreenPlum的MPP,则切换到gpadmin⽤户;# 由于我使⽤的是GreenPlum的MPP,所以切换gpadmin⽤户# ---------------------------------------------------------[root@node8 ~]# su - gpadmin# 进⼊psql[gpadmin@node8 ~]$ psql# 使⽤`\c`命令切换数据库,切换到要导出或导⼊数据的数据库# ---------------------------------------------------------postgres=# \c resdataYou are now connected to database "resdata" as user "gpadmin".12345678910113. 开始使⽤copy命令导出或导⼊数据# 使⽤ copy 命令将 resdata 库下的 aa_test 表中的数据导出到 /tmp/data/test.csv ⽂件中# ---------------------------------------------------------resdata=# COPY aa_test TO '/tmp/data/test.csv' WITH csv;COPY 2# 使⽤ copy 命令将 /tmp/data/test.csv ⽂件中内容导⼊到 resdata 库下的 aa_test 表中# ---------------------------------------------------------resdata=# COPY aa_test FROM '/tmp/data/test.csv' WITH csv;COPY 2123456789COPY TO还能拷贝SELECT查询的结果。
greenplum 语法
greenplum 语法Greenplum是一种开源分布式关系数据库管理系统,它延续了关系数据库的传统,同时兼顾海量数据处理和并行计算的性能优势。
以下是一些Greenplum语法的中文介绍:1. 创建表在Greenplum中,可以使用CREATE TABLE语句创建新表。
例如:CREATE TABLE mytable (id INTEGER,name VARCHAR(50),age INTEGER);2. 插入数据使用INSERT语句可以将数据插入到表中。
例如:INSERT INTO mytable(id, name, age)VALUES(1, '张三', 30),(2, '李四', 25),(3, '王五', 40);3. 查询数据可以使用SELECT语句查询表中的数据。
例如:SELECT * FROM mytable;4. 更新数据使用UPDATE语句可以更新表中的数据。
例如:UPDATE mytableSET age = 35WHERE name = '张三';5. 删除数据使用DELETE语句可以删除表中的数据。
例如:DELETE FROM mytableWHERE age > 30;6. 创建索引使用CREATE INDEX语句创建索引,可以加快数据的检索速度。
例如:CREATE INDEX idx_name ON mytable(name);7. 连接表可以使用JOIN语句来连接多个表。
例如:SELECT *FROM mytableINNER JOIN yourtable ON mytable.id = yourtable.id;以上是Greenplum的一些基本语法,使用这些语法可以对数据库进行各种操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Greenplum 日常简明维护手册1.数据库启动:gpstart常用参数:-a : 直接启动,不提示终端用户输入确认-m:只启动master 实例,主要在故障处理时使用访问单个数据实例:PGOPTIONS='-c gp_session_role=utility' psql template1 -p 5432启动某个segment instance :pg_ctl stop/start -D /datadir/取端口号:select * from gp_segment_configuration启动以后会在/tmp/ 下生成一个.lock 隐藏文件,记录主进程号。
2.数据库停止:gpstop:常用可选参数:-a:直接停止,不提示终端用户输入确认-m:只停止master 实例,与gpstart –m 对应使用-f:停止数据库,中断所有数据库连接,回滚正在运行的事务-u:不停止数据库,只加载pg_hba.conf 和postgresql.conf中运行时参数,当改动参数配置时候使用。
连接数,重启3.查看实例配置和状态select * from gp_segment_configuration order by content ;select * from pg_ ;主要字段说明:Content:该字段相等的两个实例,是一对P(primary instance)和M(mirror Instance)Isprimary:实例是否作为primary instance 运行Valid:实例是否有效,如处于false 状态,则说明该实例已经down 掉。
Port:实例运行的端口Datadir:实例对应的数据目录4.gpstate :显示Greenplum数据库运行状态,详细配置等信息常用可选参数:-c:primary instance 和mirror instance 的对应关系-m:只列出mirror 实例的状态和配置信息-f:显示standby master 的详细信息该命令默认列出数据库运行状态汇总信息,常用于日常巡检。
5.查看用户会话和提交的查询等信息select * from pg_stat_activity 该表能查看到当前数据库连接的IP 地址,用户名,提交的查询等。
另外也可以在master 主机上查看进程,对每个客户端连接,master 都会创建一个进程。
ps -ef |grep -i postgres |grep -i con杀进程:Linux:kill -11 PIDSql :pg_cancel_backend(pid)ps –ef |grep – i postgre |grep –i con6.查看数据库、表占用空间查询表大小:select pg_size_pretty(pg_relation_size('schema.tablename'));例: select pg_size_pretty(pg_relation_size('iidp_code.cf_load_state'));表和索引select pg_size_pretty(pg_total_relation_size('iidp_code.cf_load_state '));查询数据库大小select pg_size_pretty(pg_database_size('databasename'));例:select pg_size_pretty(pg_database_size('BDDJ_S_T'));--单个库select datname,pg_size_pretty(pg_database_size(datname)) from pg_database; --所有库分区表:Select *from pg_partitions where …查某个schema 占用的空间:select pg_size_pretty(pg_relation_size(tablename)) from pg_tables t inner join pg_namespace d on t.schemaname=d.nspname group by d.nspname必须在数据库所对应的存储系统里,至少保留30%的自由空间,日常巡检,要检查存储空间的剩余容量。
7.收集统计信息,回收空间定期使用Vacuum analyze tablename 回收垃圾和收集统计信息,尤其在大数据量删除,导入以后,非常重要将delete 或update 的“旧”数据放到Rollback Segment,与表分开存放。
并发事务为了保证数据一致性,需要从Rollback Segment 上恢复数据。
Greenplum:“旧数据”与表存放在一起,对旧的数据做了标志。
并发事务通过transaction ID(XID)判断数据是否可用系统表也是需要进行vacuum:#!/bin/bashDBNAME="databasename"VCOMMAND="VACUUM ANALYZE"#VCOMMAND="VACUUM FULL ANALYZE"psql -tc "select '$VCOMMAND' || ' pg_catalog.' || relname || ';' from pg_classa,pg_namespace b where a.relnamespace=b.oid and b.nspname= 'pg_catalog' anda.relkind='r'" $DBNAME | psql -a $DBNAME长期没有vaccum 的大表,使用重建表/drop 表的方式,消除垃圾空间。
Alter table xxx rename to yyyy.8.查看数据分布情况两种方式:Select gp_segment_id,count(*) from tablename group by 1 ;如数据分布不均匀,将发挥不了并行计算的优势,严重影响性能。
查看磁盘分布select dfhostname, dfspace,dfdevice from gp_toolkit.gp_disk_free order by dfhostname 9.实例恢复:gprecoverseg通过gpstate 或gp_segment_configuration 发现有实例down 掉以后,使用该命令进行回复,恢复时候不需要停机,不影响应用10.查看锁信息:SELECT locktype, database, c.relname, l.relation, l.transactionid, l.transaction, l.pid,l.mode, l.granted, a.current_queryFROM pg_locks l, pg_class c, pg_stat_activity aWHERE l.relation=c.oid AND l.pid=a.procpidORDER BY c.relname;主要字段说明:relname: 表名locktype、mode 标识了锁的类型MVCC: 读写相互不影响select / insert update delete避免死锁:delete 和update 是表级排他EXCLUSIVE锁。
11.数据库备份gp_dump, pg_dump常用参数:-s: 只导出对象定义(表结构,函数等)-n: 只导出某个schemagp_dump 默认在master 的data 目录上产生这些文件:gp_catalog_1_<dbid>_<timestamp> :关于数据库系统配置的备份文件gp_cdatabase_1_<dbid>_<timestamp>:数据库创建语句的备份文件gp_dump_1_<dbid>_<timestamp>:数据库对象ddl语句gp_dump_status_1_<dbid>_<timestamp>:备份操作的日志在每个segment instance 上的data目录上产生的文件:gp_dump_0_<dbid>_<timestamp>:用户数据备份文件gp_dump_status_0_<dbid>_<timestamp>:备份日志12.数据库恢复gp_restore pg_restore必选参数:--gp-k=key :key 为gp_dump 导出来的文件的后缀时间戳-d dbname :将备份文件恢复到dbname13.Master主机硬件故障时,如何切换至Stand by Master,切换成功后是否需要进行数据检查或恢复等HA答:在stand by master 主机上,运行gpactivatestandby -d /gpdata 进行切换。
由于Master 只存储系统元数据信息,切换成功后,一般不需要进行数据检查和恢复。
日常巡检中要检查Stand by master 是否同步,可以通过表gp_master_mirroring 确认,如果发现不同步,可以通过命令:gpinitstandby -sstandby_master_hostname –n 使得master和standby 重新同步。
14.当Master主机硬件故障排除时,如何由Stand by切换至原Master主机。
答:1,在standby master运行:gpinitstandby –s original_master_hostname2,在standby master 上运行:gpstop –m,注意这里只停止master 实例3,在原来的maste上运行:gpactivatestandby -d /gpdata。
4,在原来的master上运行:gpinitstandby -s original_standby_master_hostname15.日志:master 和segment 上分别有日志:$DATADIR/pg_log/*.csv$DATADIR:select * from pg_ ;使用外部表将日志导入数据库,进行分析。
使用xfs 文件系统。
后台存储目录结构:base 下每个目录,对应select oid ,* from pg_database ;select rel from pg_class : ;16.gpconfig : 4.0 新增加管理工具,参数配置工具;-c | --change <param_name>-v | --value value-m | --mastervalue master_value-s | --show <param_name>gpconfig -c max_connections -v 100 -m 1017.gpcheckperf :网络:gpcheckperf -f host -r N –netperf -d /tmp磁盘IOgpcheckperf -f host -d /data1 -d /data2 -r dlinux DD 命令:dd if=/dev/zero of=/vol2/a.test bs=256k count=161000 dd if=/vol2/b.test of=/dev/null bs=256k count=160000 18.gpssh : 同时登陆到多个机器上,进行操作Gpssh -h sdw1 –h sdw2 -h sdw319.gp_toolkit: 管理工具包:◆gp_bloat_diag◆gp_stats_missing更多详细信息参见GpadminGuide appendix I ;pg_stat_last_operation:Shows the last time certain database operations were performedon a database object, for example, the last time a table wasvacuumed。