GreenPlum_常用数据库命令

合集下载

gpconfig参数

gpconfig参数

gpconfig参数gpconfig参数是Greenplum数据库中用于配置和管理数据库的一组参数。

这些参数可以通过gpconfig命令进行设置和修改。

本文将介绍一些常用的gpconfig参数及其作用。

1. gp_vmem_protect_limit该参数用于限制Greenplum数据库的虚拟内存使用量。

通过设置该参数,可以避免数据库使用过多的虚拟内存导致系统崩溃。

可以根据实际情况调整该参数的值,以平衡内存使用和系统稳定性。

2. gp_resqueue_memory_policy该参数用于设置Greenplum数据库中资源队列的内存分配策略。

资源队列是用于管理并发查询的一种机制,通过设置该参数,可以控制不同用户或组的查询在内存中的优先级。

可以根据实际需求,设置不同的内存分配策略,以实现资源的合理分配和查询的优化。

3. gp_max_connections该参数用于设置Greenplum数据库的最大连接数。

连接数是指同时连接到数据库的客户端数量。

通过设置该参数,可以限制数据库的并发连接数,以避免系统资源过度消耗和性能下降。

可以根据系统的硬件配置和负载情况,适当调整该参数的值。

4. gp_workfile_limit该参数用于设置Greenplum数据库中工作文件的最大限制。

工作文件是在查询执行过程中临时存储中间结果的文件。

通过设置该参数,可以限制工作文件的大小,以避免磁盘空间的过度消耗和查询的性能下降。

可以根据系统的磁盘容量和查询的需求,调整该参数的值。

5. gp_autostats_mode该参数用于控制Greenplum数据库中自动统计信息的收集方式。

统计信息是用于优化查询计划的一种关键信息。

通过设置该参数,可以指定统计信息的收集方式,如自动收集、手动收集或禁止收集。

可以根据数据库的特点和查询的需求,选择合适的统计信息收集方式。

6. gp_enable_gpperfmon该参数用于启用或禁用Greenplum数据库中的性能监控功能。

greenplum where exists语句

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' 时,才会选择该员工。

gp数据库函数

gp数据库函数

GP数据库函数概述GP数据库函数是指在GP(Greenplum)数据库中使用的函数。

GP数据库是一种分布式关系型数据库,可用于大数据量的数据存储和处理。

它的函数库提供了各种功能强大的函数,可以帮助用户进行数据处理、转换和分析等操作。

在本文中,我们将深入探讨GP数据库函数的各种功能和用法,包括函数的分类、常用函数示例和函数的编写等方面。

GP数据库函数的分类GP数据库函数可以分为以下几类:1. 数学函数数学函数主要用于数值运算和计算。

它们可以执行常见的数学运算,如加法、减法、乘法和除法,还可以进行高级数值计算,如三角函数、指数函数和对数函数等。

以下是一些常用的数学函数示例:•abs(): 返回一个数的绝对值。

•sqrt(): 返回一个数的平方根。

•sin(): 返回一个角的正弦值。

2. 字符串函数字符串函数用于处理和操作字符串。

它们可以执行字符串的连接、截取、替换和格式化等操作。

以下是一些常用的字符串函数示例:•concat(): 将两个或多个字符串连接起来。

•substring(): 返回一个字符串的子串。

•replace(): 替换一个字符串中的指定内容。

3. 日期和时间函数日期和时间函数用于处理日期、时间和时间间隔。

它们可以执行日期的加减运算、格式化和比较等操作。

以下是一些常用的日期和时间函数示例:•current_date(): 返回当前日期。

•date_part(): 返回日期的指定部分,如年、月、日等。

•interval(): 创建一个时间间隔。

4. 聚合函数聚合函数用于计算数据的汇总值,如平均值、总和、最大值和最小值等。

它们通常用于与GROUP BY语句一起使用,对数据进行分组并计算每个分组的汇总值。

以下是一些常用的聚合函数示例:•avg(): 计算一组数的平均值。

•sum(): 计算一组数的总和。

•max(): 返回一组数中的最大值。

5. 窗口函数窗口函数用于在查询结果的窗口内执行计算。

greenplum regexp_replace用法

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" 的第一个字母没有改变。

greenplum数据库建表及分区

greenplum数据库建表及分区
请求出错错误代码400请尝试刷新页面重试
greenplum数 据 库 建 表 及 分 区
greenplum 创建分区表
CREATE TABLE fi_middle.order_detail (
date_id integer, order_id character varying(22), product_id character varying(50), order_quantity numeric, allot_quantity numeric, original_price numeric, sale_price numeric, vip_price numeric, bargin_price numeric, medium numeric, promotion_id numeric, is_vip_discount numeric, product_type numeric, reduce_price numeric, etl_change_date timestamp without time zone, order_items_id numeric, gift_card_charge numeric(12,2), gift_unit_price numeric, item_id numeric, parent_item_id numeric, allot_activity_fee numeric(12,2), allot_point_deduction_amount numeric, send_date timestamp without time zone, privilege_code_discount_amount numeric, relation_type numeric, parent_id character varying(16), shop_id numeric, shop_type numeric ) WITH ( OIDS=FALSE ) DISTRIBUTED BY (order_id) PARTITION BY RANGE(send_date) ( PARTITION p_order_detail_20170701 START ('2017-06-01 00:00:00'::timestamp without time zone) END ('2017-0701 00:00:00'::timestamp without time zone), PARTITION p_order_detail_20170801 START ('2017-07-01 00:00:00'::timestamp without time zone) END ('2017-0801 00:00:00'::timestamp without time zone) )

greenplumn数据库查询语句示例

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常⽤命令、函数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 命令从指定的⽂件中读取命令。

gp简易维护

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:显示错误节点的详细信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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_filespace_entry ;主要字段说明: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_filespace_entry ;使用外部表将日志导入数据库,进行分析。

使用xfs 文件系统。

相关文档
最新文档