Greenplum数据库最佳实践

合集下载

数据库系统Greenplum 研究

数据库系统Greenplum 研究

数据库系统Greenplum研究目录1. Greenplum简介 (1)2. Greenplum技术特点 (1)2.1 无共享架构 (2)2.2 基础架构MPP (3)2.3 Greenplum应用实例 (5)3. Greenplum同其他数据仓库的对比研究 (6)4. 总结 (7)摘要Teradata 作为渤海商业银行使用的的数据库仓库系统,为银行查询统计功能提供了稳定和高可用性的服务。

作为2014 年重点项目,目前我司的Teradata 版本已经升级到13.1,有效存放数据的容量到到18TB。

本文对时下新兴的数据库系统Greenplum 进行探索和研究,并将Greenplum 同其他主流数据库进行技术分析和对比。

1. Greenplum 简介Greenplum 成立于2003 年6 月,总部位于美国的加利福尼亚州,最初由Sun 公司资助,由Teradata 的几位资深工程师合作创建的为全球大型企业用户提供新型企业级数据仓库(EDW)、企业级数据云(EDC)和商务智能(BI)解决方案和咨询服务的公司。

2010 年7 月,EMC公司将Greenplum 收购,使得其研发和资本实力大大增强,成为数据仓库的一名新锐。

目前已经在纽约证券交易所、eBay、中信银行、淘宝、支付宝等具有较大型数据业务的公司中使用。

渤海商业银行数据仓库组对Greenplum 在数据仓库中的应用进行了可行性分析,并对该公司的运行情况进行了解和访问,鉴于Greenplum 公司与EMC 公司的整合需要一定时间的磨合,以及Greenplum 中国公司的重组,我们认为该企业的成熟度和对中国用户的服务速度还不是十分明确,但Greenplum 作为后起之秀有其值得研究和学习的方面。

2. Greenplum 技术特点Greenplum 成立的时间较晚,因此将主要精力放到了较为新颖的技术:新一代数据仓库和大规模分析处理数据库。

Greenplum 采用了基于相关标准的方法,可以帮助客户创建数据仓库,充分利用低成本的商用服务器、存储和联网设备,通过经济的方式升级到千万亿字节的系统。

greenplum select一笔记录

greenplum select一笔记录

研究Greenplum数据库是我最近的一个项目,Greenplum是一个由Pivotal公司开发的开源数据库管理系统,它基于PostgreSQL,并且特别适合于大规模数据仓库和分析处理。

在开始研究之前,我先了解了一些关于Greenplum的基本知识,包括其核心概念和基本操作。

1. Greenplum数据库的基本概念Greenplum是一个以并行处理为核心设计理念的数据库系统,它采用了基于共享存储的MPP(Massively Parallel Processing)架构,通过将数据切分成小块并交由多个节点并行处理,从而实现了高性能的数据处理。

2. 数据表的创建与操作在研究Greenplum数据库的过程中,我首先学习了如何在数据库中创建数据表以及对数据表进行基本的操作。

通过使用CREATE TABLE语句,我成功创建了一个包含多个字段的数据表,并且对数据表进行了插入、查询、更新和删除操作,这为后续的研究工作打下了基础。

3. Greenplum数据库的查询语句在研究Greenplum数据库的过程中,我重点学习了数据库查询语句的使用方法。

通过使用SELECT语句,我成功实现了对数据库中数据的查询操作,包括条件查询、聚合查询、排序查询和联合查询等多种查询方式,这些查询方式对于数据分析和报表生成等工作非常有用。

4. 使用Greenplum数据库进行数据分析Greenplum数据库的并行处理和高性能让其非常适合于大规模数据分析工作。

在研究的过程中,我尝试使用Greenplum数据库对大规模数据进行分析,并且成功实现了复杂的数据统计和聚合计算操作。

通过对数据的分析,我成功挖掘出了一些有价值的信息,并为后续的业务决策提供了重要参考。

5. Greenplum数据库的优势和不足在研究了Greenplum数据库的基本操作和应用之后,我对这个数据库系统有了更深入的了解。

我认为Greenplum的并行处理和高性能是其最大的优势,特别适合于大规模数据仓库和分析处理;但与此Greenplum也存在一些不足之处,比如对事务处理的支持相对较弱。

greenplum数据库函数

greenplum数据库函数

greenplum数据库函数(原创实用版)目录1.介绍 Greenplum 数据库2.概述 Greenplum 数据库函数3.Greenplum 数据库函数的分类4.实例解析 Greenplum 数据库函数5.总结正文1.介绍 Greenplum 数据库Greenplum 是一种基于 PostgreSQL 的开源数据库,它为大数据处理提供了强大的支持。

Greenplum 数据库采用了一种称为“列式存储”的存储方式,使得其在处理大规模数据时具有高效的性能。

此外,Greenplum 还提供了许多高级功能,如外部表、分布式查询等,使其在处理大数据时更加灵活。

2.概述 Greenplum 数据库函数在 Greenplum 数据库中,函数是一种预先定义好的可重复使用的代码片段,它可以帮助用户简化查询语句,提高查询效率。

Greenplum 数据库提供了丰富的函数,包括聚合函数、数学函数、字符串函数等。

这些函数可以帮助用户在查询过程中实现各种复杂的操作。

3.Greenplum 数据库函数的分类Greenplum 数据库函数主要分为以下几类:(1)聚合函数:聚合函数是对一组数据进行统计或汇总的函数,如COUNT、SUM、AVG 等。

(2)数学函数:数学函数是用于执行各种数学运算的函数,如加、减、乘、除等。

(3)字符串函数:字符串函数是用于处理字符串的函数,如字符串连接、字符串查找、字符串替换等。

(4)日期和时间函数:日期和时间函数是用于处理日期和时间的函数,如获取当前日期、计算日期间隔等。

(5)其他函数:除了上述几类函数之外,Greenplum 数据库还提供了其他一些实用函数,如数组操作函数、JSON 函数等。

4.实例解析 Greenplum 数据库函数以 COUNT 函数为例,该函数用于统计一组数据的记录数。

在Greenplum 数据库中,可以使用如下语法来实现 COUNT 函数:```sqlSELECT COUNT(*) FROM table_name;```其中,`table_name` 是要统计的表名。

高效使用Greenplum:入门、进阶与数据中台

高效使用Greenplum:入门、进阶与数据中台

8.1数据库管理 8.2可视化监控页面—GPCC 8.3管理好帮手—gp_toolkit 8.4 Greenplum备份和恢复 8.5在线扩容工具GPExpand 8.6锁机制
9.1系统级优化 9.2数据库级优化 9.3表级优化 9.4执行计划和查询优化
10.1 Kettle 10.2 DataX 10.3 HDFS、Hive和HBase 10.4 Spark 10.5 Kafka 10.6 Flink
读书笔记
介绍了greenplum数据库作为数仓选型的优点,以及数据中台的很多知识。
目录分析
第一部分大数据平台概述
1.1关系型数据库 1.2 Hadoop生态系统 1.3 NoSQL的瓶颈和SQL数据库的回归 1.4 MPP架构的兴起
第3章 Greenplum 的安装与部署
第2章 Greenplum 概述
4.1数据类型详解 4.2数据表的基本使用 4.3数据表的高级应用 4.4数据库函数 4.5数据库的其他对象
第5章
1
Greenplum查
询详解
2
第6章 ETL工 具箱
3 第7章
Greenplum高 级应用
4 第8章
Greenplum运 维管理和监控
5 第9章
Greenplum性 能优化
第10章 Greenplum与
开源组件
第11章 Greenplum与 BI应用
5.1 SQL语法 5.2 JOIN操作 5.3分析函数的妙用 5.4高级函数精选
6.1数据加载王者GPLoad 6.2自定义存储过程 6.3 PXF插件 6.4 DBLink 6.5拉链表
7.1开放的编程接口 7.2 MADlib机器学习库 7.3半结构化数据分析 7.4地理空间数据分析 7.5图计算应用

Greenplum数据库设计开发规范参考

Greenplum数据库设计开发规范参考

Greenplum数据库设计开发规范参考文档2016年7月目录GREENPLUM数据库设计开发规范 (1)V1.5..................................................................................................................... 错误!未定义书签。

1 前言 (4)1.1文档目的 (4)1.2文档范围 (4)1.3预期读者 (4)1.4参考资料 (4)2 开发规范检查项 (4)3 GP与TD的差异关注点 (6)4 系统级设计 (7)4.1用户设计 (7)4.1.1 超级用户 (7)4.1.2 公共查询用户 (8)4.1.3 公共数据区用户 (8)4.1.4 集市系统用户 (8)4.2数据库表空间设计 (9)4.3资源队列设计 (10)4.4系统级的维护工作 (11)4.4.1 系统表的维护工作 (11)4.4.2 各种库表的维护工作 (11)4.4.3 投产前统一收集统计信息 (12)5 命名规范 (12)6 数据库对象设计规范 (12)6.1数据库对象数据量 (12)6.2表创建规范 (13)6.3表设计 (14)6.3.1 数据类型 (14)6.3.2 数据分布 (16)6.3.3 数据分区 (17)6.3.4 数据表压缩 (21)6.3.5 数据表行列存储 (22)6.4索引设计 (23)6.5视图设计 (25)6.6S EQUENCE设计 (25)6.7其他数据库对象设计 (26)6.7.1 Schema (26)6.7.2 函数 (26)6.7.3 触发器 (27)6.7.4 临时表 (27)7 开发规范 (27)7.1GP查询优化器GPORCA的使用 (27)7.2SQL开发规范 (28)7.2.1 基本要求 (28)7.2.2 大小写 (28)7.2.3 缩进和换行 (28)7.2.4 WHERE条件 (29)7.2.5 表连接 (30)7.2.6 排序语句 (32)7.2.7 运算符前后间隔 (33)7.2.8 CASE 语句编写 (33)7.2.9 SQL语句注释 (34)7.2.10 嵌套子查询 (36)7.2.11 高效的SQL语句写法 (36)7.2.12 开发建议 (41)7.3存储函数开发规范 (42)7.3.1 编码规则 (42)7.3.2 大小写规则 (44)7.3.3 缩进与换行 (45)7.3.4 事务管理规范 (46)7.4应用开发规范 (46)7.4.1 禁止在模板中嵌套子查询 (47)7.4.2 两表关联执行delete语句 (47)7.4.3 Window函数注意问题 (47)7.4.4 Window函数和聚合函数使用原则 (48)1前言1.1文档目的随着Greenplum 数据库仓库平台应用逐步上线,为了保证Greenplum 数据仓库系统平台的平稳运行,保证系统的可靠性、稳定性、可维护性和高性能,特制定本开发规范,以规范基于Greenplum平台的应用开发,提高开发质量。

基于Greenplum的金融数据仓库模型设计与实现

基于Greenplum的金融数据仓库模型设计与实现

B06. 票据业务 承兑业务 贴现业务
转贴现
再贴现
预算管控 零余额管理 投标保证金
聚合支付
B07. 资金业务 内部拆借 内部清算
信贷资产转让 财务顾问 委托理财
B08. 国际业务 外汇买卖业务 外汇资金管理业务
质押式回购 发行债券 票据回购 票据质押
资金划转
外币存款 外币贷款
债券现券 公募基金
票据池
第 21 期
综合金融服务系统 结算服务 票据服务 ……
客户服务能力层 聚合支付系统
快捷支付 商户管理 ……
员工工作台系统 代办管理 消息管理 ……
渠道整合平台
企业服务总线(ESB)
业务运营能力层
信贷管理系统
资金结算系统
票据系统
投资管理系统
外汇业务系统
贷前管理
一户通总户
票据承兑
同业存款
外汇买卖
合同管理
数据管控
元 数 据 管 理
智能搜索查询 业务应用
一户式分析
自定义查询 自定义分析
工作桌面 大屏展示
经营管理 数据化运营
数据应用服务平台
风险管理 精准画像
关系图谱 ……
调度平台










明细层 汇总层

校验层



实时抽取
数据缓冲处理
应用集市层
共性加工层
离 线
统 一
基础数据层


技术缓冲层

显得至关重要,数据仓库在面对海量的业务数据时,有着安全化、实时化、规范化、智能分析以及预测等诸多优势。而数据模型

GREENPLUM介绍之数据库管理(四)-创建数据库和用户管理

GREENPLUM介绍之数据库管理(四)-创建数据库和用户管理

GREEN‎P LUM介‎绍之数据库‎管理(四)‎-创建数据‎库和用户管‎理上一篇‎/ 下一‎篇 20‎11-04‎-08 1‎5:09:‎01 / ‎个人分类:‎G REEN‎P LUM ‎查看(‎82 )‎/ 评论‎( 1 )‎/ 评分‎( 5 /‎0 ) ‎GREE‎N PLUM‎与ORAC‎L E一样有‎着完全独立‎于操作系统‎的用户管理‎系统,以及‎权限管理系‎统。

首先‎我们介绍一‎下GP中的‎数据库。

‎在GP初始‎化系统后,‎G P会自动‎创建出三个‎数据库po‎s tgre‎,temp‎l ate0‎,temp‎l ate1‎.其中‎p ostg‎r e用作系‎统内部数据‎的存放,我‎们既不要删‎除它,也不‎要修改它。

‎temp‎l ate1‎是系统默认‎的数据,我‎们创建数据‎库时可以以‎t empl‎a te1为‎模板,创建‎新的数据库‎。

所以,‎如果有不希‎望其它数据‎库继承的对‎象,就不要‎在数据库t‎e mpla‎t e1中进‎行创建。

‎G P中创建‎数据库的语‎法非常简单‎,句法如下‎CRE‎A TE D‎A TABA‎S E ne‎w name‎USIN‎G TEM‎P LATE‎tmpl‎a tedb‎n ame;‎速度非‎常快,这个‎过程中系统‎会生成相应‎的字典信息‎。

如果没‎有指定us‎i ng t‎e mpla‎t e子句,‎系统就使用‎t empl‎a te1数‎据库作为模‎板创建新数‎据库。

我‎们也可以其‎它数据库为‎模板,创建‎新的数据库‎。

tem‎p late‎0数据库是‎创建tem‎p late‎1的模板,‎一般我们也‎不使用它创‎建应用对象‎。

GP允‎许在一个G‎P SER‎V ER中创‎建多个DA‎T ABAS‎E。

但是一‎个DATA‎B ASE只‎能属于一个‎S ERVE‎R。

一个‎连接在同一‎时间点只能‎访问一个数‎据库。

G‎P中也有S‎C HEMA‎的概念。

GreenPlum的SQL优化方案

GreenPlum的SQL优化方案

GreenPlumn的SQL语句查询优化数据库查询预准备1. VACUUM•vacuum只是简单的回收空间且令其可以再次使用,没有请求排它锁,仍旧可以对表读写•vacuum full执行更广泛的处理,包括跨块移动行,以便把表压缩至使用最少的磁盘块数目存储。

相对vacuum要慢,而且会请求排它锁。

•定期执行:在日常维护中,需要对数据字典定期执行vacuum,可以每天在数据库空闲的时候进行。

然后每隔一段较长时间(两三个月)对系统表执行一次vacuum full,这个操作需要停机,比较耗时,大表可能耗时几个小时。

•reindex:执行vacuum之后,最好对表上的索引进行重建2. ANALYZE•命令:analyze [talbe [(column,..)]]•收集表内容的统计信息,以优化执行计划。

如创建索引后,执行此命令,对于随即查询将会利用索引。

•自动统计信息收集•在postgresql.conf中有控制自动收集的参数gp_autostats_mode设置,gp_autostats_mode三个值:none、no_change、on_no_stats(默认)o none:禁止收集统计信息o on change:当一条DML执行后影响的行数超过gp_autostats_on_change_threshold参数指定的值时,会执行完这条DML后再自动执行一个analyze 的操作来收集表的统计信息。

o no_no_stats:当使用create talbe as select 、insert 、copy时,如果在目标表中没有收集过统计信息,那么会自动执行analyze 来收集这张表的信息。

gp默认使用on_no_stats,对数据库的消耗比较小,但是对于不断变更的表,数据库在第一次收集统计信息之后就不会再收集了。

需要人为定时执行analyze.•如果有大量的运行时间在1分钟以下的SQL,你会发现大量的时间消耗在收集统计信息上。

greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理(Da..

greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理(Da..

greenplum介数据库绍之数据库管理(四)-创建数据库和用户管理(Database management in Greenplum database (four) - creating database and user management)Introduction to database management GREENPLUM (four) - create database and user managementOn a 2011-04-08 15:09:01 / person classification: GREENPLUMSee (82) / (1) / review score (5 / 0)GREENPLUM and ORACLE have the same user management system is completely independent of the operating system, and rights management system. Firstly, we introduce the database in GP. In the GP system initialization, GP will automatically create a database of three postgre, template0, template1. which postgre is used as a storage system for internal data, we do not delete it, also do not modify it. Template1 is the default data, we can create a database using template1 as a template, create a new database. So, if there is no other database object hope inheritance, do not create database template1. Create database GP syntax is simple, syntax is as followsCREATE DATABASE newname USING TEMPLATE tmplatedbname;Very fast, this process will generate the corresponding dictionary information. If you do not specify the using template clause, the system uses template1 database to create a new database as a template. We can also be other database as a template to create a new database. The template0 database is to create the template1 template, we do not use it to createthe application object. GP allows you to create multiple DATABASE in a GP SERVER. But a DATABASE can only belong to one SERVER. A connection at the same time can only access a database.The concept of GP also has SCHEMA. A collection of objects are related to the nature of SCHEMA is a database, or can also be understood as the object of the namespace. GP allows you to create multiple SCHEMA in a database, but a SCHEMA can only belong to a database. When you create a database, automatically create a PUBLIC called SCHEMA system. If you need to create SCHEMA, the syntax is as followsCREATE SCHEMA schema_name;A SCHEMA, do not allow object with the same name. But different SCHEMA is allowed to object of the same name. So many SQL can access the object in the object name with the SCHEMA prefix, a description of the object. If not the SCHEMA prefix, access object, session specified SCHEMA sequence search object, the default search path is only public, the new schema will not be added to the. This is a class of users now common problems in the use of tools. Due to the default SCHEMA search path is not set correctly, cause the application cannot access to the object. Just as the followingXjods=# create schema xjods;CREATE SCHEMAXjods=# create table xjods.t1 (ID numeric);NOTICE: Table doesn't have'DISTRIBUTED BY'clause column named'id' as the Using Greenplum Database data distribution key for this table.HINT: The'DISTRIBUTED BY'clause determines the distribution of data. Make sure column (s) chosen are the optimal data distribution key to minimize skew.CREATE TABLEXjods=#Xjods=# select * from t1;ERROR: relation "T1" does not existLINE 1: select * from t1;'The SCHEMA search path settings can be specified in the session, you can specify the database level, can be specified at the user level, can also be specified in the service parameter.Specified in the session, only for the current connection.Search_path to = > set'myschema, public';Specified in the database, for a particular databaseAlter database <dbname> set search_path to = myschema, publicSet at the user level,Yes, the user's connection is valid, for exampleALTER, ROLE, Sally, SET, search_path, TO, myschema, public, pg_catalog;To see the current schema, you can use the following command= > SELECT (current_schema);perhaps= > SHOW search_path;If there is a conflict in the settings, priority is set by the session, priority is set to the user, priority is given to the database, and priority is set to the service parameter.In general, we can understand that the database corresponds to the application, and the SCHEMA corresponds to each application module. In the specific database settings, you can flexibly set according to demand. For example, if you want to simplify backups and reduce system load, you should try to minimize database creation. Because this reduces the number of backups, as well as the dictionary information.Next, look at the users in GP. Users of a database are essentially mechanisms for authentication and privilegemanagement. Like ORACLE, GP also has a user management module that is completely independent of the operating system. That is, GP users do not have much to do with operating system users. When you create a database, the system will create a gpadmin called super administrator (recommended to install the GP operating system is gpadmin, the default user) the account from the server login, can take the operating system does not require authentication, user name and password. It can complete all operations.The syntax for creating a user in GP is as followsCREATE ROLE name [[WITH] option '[...Its options specify user authentication, system permissions, and resource restrictions, and so on. Specific options are as followsSUPERUSER NOSUPERUSER |Specifies whether the user is a super administrator and defaults to NOSUPERUSER. If you are a super administrator, there are no access restrictions. General application users do not grant this permission.CREATEDB NOCREATEDB |Specifies whether the user can create a database. The default is NOCREATEDBCREATEROLE NOCREATEROLE |Specifies whether the user can create new users, and defaults to NOCREATEROLECREATEEXTTABLE NOCREATEEXTTABLE[(attribute='value'[|,...])]Specifies whether the user can create an external table of a specific type, a particular protocol.The specified attributes includeType='readable'|'writable'Protocol='gpfdist'|'http'|'gphdfs'If you use the file protocol, or the external table of the execute protocol, you must be a super administrator.The default is NOCREATEEXTTABLEINHERIT NOINHERIT |In GP, there is no independent role concept, the user is both a role and a user. So when oneLOGIN NOLOGIN |Sets whether the user has access to the system. The default is NOLOGIN. NOLOGIN permissions are assigned to roles that are generally used to manage permissions.CONNECTION LIMIT connlimitLimit the number of concurrent connections. The default value is -1, which indicates no restriction. There are other more appropriate ways to restrict the number of concurrent connections in GP, so it is recommended that you do not modify this setting.[ENCRYPTED] PASSWORD'password'UNENCRYPTED |Sets the user's password and specifies whether the password to be stored in the dictionary is encrypted.VALID UNTIL'timestamp'Specifies the lifetime of the password. The default is never expired.IN, ROLE, rolename [...]Add a new member role to the role, so that the new user becomes a group concept. You can use the grant command to achieve the same effectADMIN rolename [...]When adding new roles to roles, use the with admin option option. Allows roles to grant permissions to other roles to other roles.RESOURCE QUEUE queue_nameThe resource consumption of user connections is controlled after the resource queue is established for the user. A user can only allocate one resource queue.= #创建角色管理createrole createdb;GP没有独立的用户组或者角色概念。

[原创]Greenplum数据库集群实践

[原创]Greenplum数据库集群实践

[原创]Greenplum数据库集群实践GreenPlum实践==============================================目录:一、安装环境准备二、GP数据库安装三、集群添加standby节点四、master和standby相互切换五、新增segment节点六、非Mirror模式为Segment节点增加Mirror七、Segment节点故障转移到Mirror并恢复segment八、迁移(替换)segment节点九、移除segment节点十、常用SQL和数据导入导出十一、GP集群中表的数据分布机制以及同步机制==============================================一、安装环境准备机器IP 角色192.168.156.144 master192.168.156.145 segment1192.168.156.146 segment2192.168.156.200 standbyGreenplum 需要在GP 数据库系统的所有主机(masters 和 segments) 上配置推荐的OS参数,以root用户登录,修改所有主机的OS参数(1)、关闭防火墙(三台主机)(学习时可以直接关闭,正式环境是通过开放端口)#service iptables stop 停止防火墙服务,重启电脑后仍然会开启#chkconfig iptables off 关闭防火墙服务开机启动,重启后生效(2)、修改/etc/hosts文件(三台主机)在hosts文件中添加或修改一下内容:192.168.156.144 master192.168.156.145 segment1192.168.156.146 segment2添加之后,可以通过ping命令测试是否正确,如:ping master测试是否能访问master节点(3)、修改或添加/etc/sysctl.conf(三台主机)kernel.shmmax = 500000000kernel.shmmni = 4096kernel.shmall = 4000000000kernel.sem = 250 512000 100 2048kernel.sysrq = 1kernel.core_uses_pid = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.msgmni = 2048net.ipv4.tcp_syncookies = 1net.ipv4.ip_forward = 0net.ipv4.conf.default.accept_source_route = 0net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_max_syn_backlog = 4096net.ipv4.conf.all.arp_filter = 1net.ipv4.ip_local_port_range = 1025 65535dev_max_backlog = 10000vm.overcommit_memory = 2(4)、配置/etc/security/limits.conf文件,添加以下内容(三台主机)* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072(5)、设置预读块的值为16384(三台主机)# blockdev --getra /dev/sda 查看预读块,默认大小为8196# blockdev --setra 16384 /dev/sda 设置预读块(6)、设置磁盘访问I/O调度策略(三台主机)# echo deadline > /sys/block/sda/queue/scheduler(7)、上传并解压数据库安装文件(master节点)# unzip gpmaster.zip之后的目录文件如下:greenplum_path.sh - Greenplum 数据库环境变量配置文件GPDB-LICENSE.txt- Greenplum license 文件LICENSE.thirdparty- 第三方 license 文件bin- 目录下包括Greenplum 数据库管理程序,也包括PostgreSQL 客户端和服务程序demo - 目录下包括Greenplum 演示程序docs - Greenplum 数据库帮助文档(PDF 格式)etc - OpenSSL 配置文件ext - Greenplum 数据库程序用的附加程序( 如 Python)include - Greenplum 数据库C header fileslib - Greenplum 数据库和 PostgreSQL 库文件sbin - Supporting/Internal 脚本和程序share - Greenplum 数据库共享文件二、GP数据库安装1、安装软件(master节点)在/etc/profile中增加:# source /usr/local/gpmaster/greenplum_path.sh,然后在三台主机执行命令:source /usr/local/gpmaster/greenplum_path.sh2.创建用户和节点文件# useradd gpadmin -m# passwd gpadmin在gpadmin账户下创建all_hosts,文件内容:(三台主机)mastersegment1segment23.运行gpseginstall工具(master节点 /home/gpadmin)在所有节点上安装GP软件,完成后提示成功.# chgrp -R gpadmin /usr/local# chmod -R 0775 /usr/local# su - gpadmin# gpseginstall -f all_hosts -u gpadmin -p gpadmin4.切换到gpadmin用户验证无密码登录(三台主机)(1)切换用户# su - gpadmin(2)使用gpssh工具来测试无密码登录所有主机,结果如下图:# gpssh-exkeys -f all_hosts# gpssh -f all_hosts -e ls -l $GPHOME5.配置环境变量(master节点)在/home/gpadmin路径下,以root用户添加下述信息到.bashrc和.bash_profile文件最后# source /usr/local/gpmaster/greenplum_path.sh然后将.bashrc文件发送到segment1和segment2,命令如下:# scp .bashrc segment1:~# scp .bashrc segment2:~6.创建存储区域(master节点)(1)创建Master数据存储区域# gpssh -h master -e 'mkdir -p /data/master'(2)改变目录的所有权# gpssh -h master -e 'chown gpadmin:gpadmin /data/master'(3)创建一个包含所有segment主机名的文件/home/gpadmin/seg_hosts,内容如下:segment1segment2(4)使用gpssh工具在所有segment主机上创建主数据和镜像数据目录,如果没有设置镜像可以不创建mirror目录(切换gpadmin用户)# gpssh -f seg_hosts -e 'mkdir -p /data/primary'# gpssh -f seg_hosts -e 'mkdir -p /data/mirror'# gpssh -f seg_hosts -e 'chown gpadmin /data/primary'# gpssh -f seg_hosts -e 'chown gpadmin /data/mirror'7.同步系统时间,需要安装ntpd。

Greenplum管理实践.ppt

Greenplum管理实践.ppt

1.Managing Roles and Privileges
• Role=User+Group
2. Configuring Client Authentication
• pg_hba.conf local all gpadmin trust host all gpadmin 127.0.0.1/32 password
3. Managing Workload and Resources
• Resource queue
CREATE RESOURCE QUEUE executive WITH (ACTIVE_STATEMENTS=3, PRIORITY=MAX);
4. Defining Database Objects
inconsistencies.
9. Expanding a Greenplum
System
• gpexpand
• To interactively create an expansion input file: • gpexpand -f hosts_file • To initialize segments and create expansion schema: • gpexpand -i input_file -D database_name • To redistribute tables: • gpexpand -d duration • To remove the expansion schema: • gpexpand -c
• Multi-level Partition Design
Check constraint
5. Managing Data
• Vacuuming the Database

部署greenplum数据库

部署greenplum数据库

用户自定义函数。
联网的系统都可以安装这些 bashrc),如图 1 所示。
Greenplum 数 据 库 是 同 安装包。
source /opt/gpdb/
类产品中唯一一个拥有大
greenplum_path.sh
量分发安装包的开源产品, 典型环境部署研究
MASTER_DATA_
而且随着 Greenplum 数据库
(二)编辑修改 gpinitsystem 配 置文件
9. 创 建 DATA_DIRECTORY 目 录(命 令 : mkdir -p /data/ primary1/;mkdir -p /data/
82 2019.10
责任编辑:季莹 投稿信箱:netadmin@ 基础设施与数据管理 Infrastructure Mgmt. & Data Mgmt.
图 2 更新源地址 图 3 更新检索信息
图 4 安装数据库软件 图 5 自动安装并放在相应路径中
图 6 加载环境变量
径中,结果如图 5 所示。
6. 将 Greenpl um 软件加载到环 境 变 量 中,结 果 如 图 6 所 示(命 令 :./opt/gpdb/ greenplum_path. sh)。
责任编辑:季莹 投稿信箱:netadmin@ 基础设施与数据管理 Infrastructure Mgmt. & Data Mgmt.
部署 Greenplum 数据库
■ 中共贵州省委组织部 朱懿 邵柱
Greenplum 编者按 :Greenplum 是一个 MPP 架构的分布式数据库,其最 G r e e n p l u m
primary2/;mkdir -p /data/ greenplum/ gpdata/ gpmaster)。

Greenplum数据引擎-最强大的分析数据库

Greenplum数据引擎-最强大的分析数据库

Greenplum数据引擎-最强⼤的分析数据库
Greenplum数据引擎是为了⽀持新⼀代数据仓库和分析处理⼤规模数据⽽建⽴的软件解决⽅案。

Greenplum⽀持SQL和MapReduce的并⾏处理功能,并能以较低的成本向管理TB量到PB量级数据的企业提供业界领先的性能。

Greenplum数据引擎的优势在于:
1、建⽴超⼤级的数据量
依照需求,快速简便的建⽴任意⼤⼩和种类的数据仓库
使⽤业界的标准硬件,扩充符合成本效益
2、海量并⾏的查询能⼒
相⽐于传统查询,可以以10倍到100倍的超快速度得到答案
随着您的数据增长确保⾼性能的分析效率
3、不定格式的数据处理
⼀个平台可以⽀持数据查询,机器学习,⽂本挖掘,统计计算等
使⽤业界标准的语⾔(SQL,MapReduce,R),在各个数据层级进⾏并⾏分析
Greenplum数据引擎的技术突破在于使⽤群集(Cluster)业界标准的硬件,可以对于从TB量级到PB量级的数据进⾏分组,存储和分析,因为Greenplum数据引擎在处理数据的时候尽可能接近的数据源,快速的并⾏处理,如此的技术可以提供超级⼤量的数据处理和⽆与伦⽐的导⼊和查询性能。

同时Greenplum数据引擎可以很容易依照需求,增加存储容量和处理能⼒,避免代价⾼昂的设备升级。

Greenplum数据库是业界最快和最⾼性价⽐的⾼端数据仓库解决⽅案。

⽤户将可以对于⼤量的数据运⾏复杂的分析,通常⽤传统的解决办法需要⼏天的运算, 实际上只需⼏秒钟就可以完成。

CPIC-Greenplum 调优汇总

CPIC-Greenplum 调优汇总

中国太平洋保险Greenplum数据库调优总结易安信电脑系统(中国)有限公司2013年03月20日文档信息文档维护记录版权说明本文件中出现的任何文字叙述、文档格式、插图、照片、方法、过程等内容,除另有特别注明,版权均属EMC公司所有,受到有关产权及版权法保护。

任何个人、机构未经EMC 公司的书面授权许可,不得复制、引用或传播本文件的任何片断,无论通过电子形式或非电子形式。

目录第一章调优需求 (4)第二章调优时间安排 (5)第三章调优过程 (6)3.1G REENPLUM执行计划分析 (6)3.1.1在不同时期执行计划比较 (7)3.1.2差异原因分析 (9)3.1.3调优原则 (10)3.2分布健选择策略 (10)3.2.1调优前效率 (10)3.2.2调优后效率 (10)3.2.3调优SQL (10)3.2.4效率分析 (12)3.2.5调优方案 (15)3.2.6调优原则 (15)3.3索引、主健约束 (16)3.3.1调优前效率 (16)3.3.2调优后效率 (16)3.3.3调优SQL (16)3.3.4效率分析 (16)3.3.5调优方案 (16)3.3.6调优原则 (17)3.4分区表规划 (17)3.4.1调优前效率 (17)3.4.2调优后效率 (17)3.4.3调优SQL (17)3.4.4效率分析 (19)3.4.5调优方案 (19)3.4.6调优原则 (20)3.5关联查询效率优化 (20)3.5.1调优SQL (20)3.5.2效率分析 (21)3.5.3调优方案 (22)3.5.4调优原则 (23)第四章后续优化建议 (24)4.1硬件问题 (24)4.2磁盘空间回收 (24)4.3分布健调整 (25)4.4分区表建立 (25)第一章调优需求中国太保EDW平台部分新应用上线后,出现系统性能下降和部分function执行缓慢,需要对系统进行检查和调优。

环境现状如下:2+12的GP集群环境,已保存28TB的生产数据,基本上没有使用压缩表和分区表。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

❖介绍本文介绍Pivotal Greenplum Database数据库(以下简称:Greenplum数据库,或GPDB)的最佳实践。

最佳实践是指能持续产生比其他方法更好结果的方法或者技术,它来自于实战经验,并被证实了遵循这些方法可以获得可靠的预期结果。

本最佳实践旨在通过利用所有可能的知识和技术为正确使用GPDB提供有效参考。

本文不是在教您如何使用Greenplum数据库的功能,而是帮助您在设计、实现和使用Greenplum数据库时了解需要遵循哪些最佳实践。

关于如何使用和实现具体的Greenplum 数据库特性,请参考gpdb.docs.pivotal.io 上的Greenplum数据库帮助文档以及 上的Sandbox和实践指南。

本文目的不是要涵盖整个产品或者产品特性,而是概述GPDB实践中最重要的因素。

本文不涉及依赖于GPDB具体特性的边缘用例,后者需要精通数据库特性和您的环境,包括SQL访问、查询执行、并发、负载和其他因素。

通过掌握这些最佳实践知识,会增加GPDB集群在维护、支持、性能和可扩展性等方面的成功率。

第一章最佳实践概述本部分概述了Greenplum数据库最佳实践所涉及的概念与要点。

数据模型GPDB 是一个基于大规模并行处理(MPP)和无共享架构的分析型数据库。

这种数据库的数据模式与高度规化的事务性SMP数据库显著不同。

通过使用非规化数据库模式,例如具有大事实表和小维度表的星型或者雪花模式,GPDB在处理MPP分析型业务时表现优异。

跨表关联(JOIN)时字段使用相同的数据类型。

详见数据库模式设计(后续章节)堆存储和追加优化存储(Append-Optimized,下称AO)若表和分区表需要进行迭代式的批处理或者频繁执行单个UPDATE、DELETE或INSERT操作,使用堆存储。

若表和分区表需要并发执行UPDATE、DELETE或INSERT操作,使用堆存储。

若表和分区表在数据初始加载后更新不频繁,且仅以批处理方式插入数据,则使用AO存储。

不要对AO表执行单个INSERT、UPDATE或DELETE操作。

不要对AO表执行并发批量UPDATE或DELETE操作,但可以并发执行批量INSERT操作。

详见堆存储和AO存储(后续章节)行存储和列存储若数据需要经常更新或者插入,则使用行存储。

若需要同时访问一个表的很多字段,则使用行存储。

对于通用或者混合型业务,建议使用行存储。

若查询访问的字段数目较少,或者仅在少量字段上进行聚合操作,则使用列存储。

若仅常常修改表的某一字段而不修改其他字段,则使用列存储。

详见行存储和列存储(后续章节)压缩对于大AO表和分区表使用压缩,以提高系统I/O。

在字段级别配置压缩。

考虑压缩比和压缩性能之间的平衡。

详见压缩(后续章节)分布为所有表定义分布策略:要么定义分布键,要么使用随机分布。

不要使用缺省分布方式。

优先选择可均匀分布数据的单个字段做分布键。

不要选择经常用于 WHERE 子句的字段做分布键。

不要使用日期或时间字段做分布键。

分布键和分区键不要使用同一字段。

对经常执行JOIN操作的大表,优先考虑使用关联字段做分布键,尽量做到本地关联,以提高性能。

数据初始加载后或者每次增量加载后,检查数据分布是否均匀。

尽可能避免数据倾斜。

详见分布(后续章节)存管理设置vm.overcommit_memory 为 2不要为操作系统的页设置过大的值使用gp_vmem_protect_limit 设置单个节点数据库(Segment Database)可以为所有查询分配的最大存量。

不要设置过高的gp_vmem_protect_limit 值,也不要大于系统的物理存。

gp_vmem_protect_limit 的建议值计算公式为: (SWAP + (RAM *vm.overcommit_ratio)) * 0.9 / number_Segments_per_server使用statement_mem 控制节点数据库为单个查询分配的存量。

使用资源队列设置队列允许的当前最大查询数(ACTIVE_STATEMENTS)和允许使用的存大小(MEMORY_LIMIT)。

不要使用默认的资源队列,为所有用户都分配资源队列。

根据负载和时间段,设置和队列实际需求相匹配的优先级(PRIORITY)。

保证资源队列的存配额不超过gp_vmem_protect_limit。

动态更新资源队列配置以适应日常工作需要。

详见存和负载管理(后续章节)分区只为大表设置分区,不要为小表设置分区。

仅在根据查询条件可以实现分区裁剪时使用分区表。

建议优先使用围 (Range) 分区,否则使用列表 (List) 分区。

根据查询特点合理设置分区。

不要使用相同的字段即做分区键又做分布键。

不要使用默认分区。

避免使用多级分区;尽量创建少量的分区,每个分区的数据更多些。

通过查询计划的 EXPLAIN 结果来验证查询对分区表执行的是选择性扫描(分区裁剪)。

对于列存储的表,不要创建过多的分区,否则会造成物理文件过多: Physical files = Segments * Columns * Partitions。

详见分区(后续章节)索引一般来说GPDB中索引不是必需的。

对于高基数的列存储表,如果需要遍历且查询选择性较高,则创建单列索引。

频繁更新的列不要建立索引。

在加载大量数据之前删除索引,加载结束后再重新创建索引。

优先使用 B 树索引。

不要为需要频繁更新的字段创建位图索引。

不要为唯一性字段,基数非常高或者非常低的字段创建位图索引。

不要为事务性负载创建位图索引。

一般来说不要索引分区表。

如果需要建立索引,则选择与分区键不同的字段。

详见索引(后续章节)资源队列使用资源队列管理集群的负载。

为所有角色定义适当的资源队列。

使用 ACTIVE_STATEMENTS 参数限制队列成员可以并发运行的查询总数。

使用 MEMORY_LIMIT 参数限制队列中查询可以使用的存总量。

不要设置所有队列为 MEDIUM,这样起不到管理负载的作用。

根据负载和时间段动态调整资源队列。

详见配置资源队列(后续章节)监控和维护根据《Greenplum数据库管理员指南》实现该书推荐的监控和管理任务。

安装Greenplum数据库前建议运行gpcheckperf,安装后定期运行。

保存输出结果,随着时间推移对系统性能进行比较。

使用所有您可用的工具,以了解系统不同负载下的表现。

检查任何不寻常的事件并确定原因。

通过定期运行解释计划监控系统查询活动,以确保查询处于最佳运行状态。

检查查询计划,以确定是否按预期使用了索引和进行了分区裁剪。

了解系统日志文件的位置和容,定期监控日志文件,而不是在出现问题时才查看。

详见系统监控和维护以及监控GPDB日志文件。

(后续章节)ANALYZE不要对整个数据库运行 ANALYZE,只对需要的表运行该命令。

建议数据加载后即刻运行 ANALYZE。

如果INSERT、UPDATE 和 DELETE 等操作修改大量数据,建议运行 ANALYZE。

执行 CREATE INDEX 操作后建议运行 ANALYZE。

如果对大表ANALYZE耗时很久,则只对JOIN字段、WHERE、SORT、GROUP BY 或 HAVING 字句的字段运行 ANALYZE。

详见使用ANALYZE更新统计信息。

(后续章节)Vaccum批量 UPDATE 和 DELETE 操作后建议执行 VACUUM。

不建议使用 VACUUM FULL。

建议使用 CTAS(CREATE TABLE...AS)操作,然后重命名表名,并删除原来的表。

对系统表定期运行 VACUUM,以避免系统表臃肿和在系统表上执行 VACUUM FULL 操作。

禁止杀死系统表的 VACUUM 任务。

不建议使用 VACUUM ANALYZE。

详见消除系统表臃肿。

(后续章节)加载使用 gpfdist 进行数据的加载和导出。

随着段数据库个数的增加,并行性增加。

尽量将数据均匀地分布到多个 ETL 节点上。

将非常大的数据文件切分成相同大小的块,并放在尽量多的文件系统上。

一个文件系统运行两个 gpfdist 实例。

在尽可能多的网络接口上运行 gpfdsit。

使用gp_external_max_segs 控制访问每个 gpfdist 服务器的段数据库的个数。

建议gp_external_max_segs的值和 gpfdist 进程个数为偶数。

数据加载前删除索引;加载完后重建索引。

数据加载完成后运行 ANALYZE 操作。

数据加载过程中,设置gp_autostats_mode 为 NONE,取消统计信息的自动收集。

若数据加载失败,使用 VACUUM 回收空间。

详见加载数据。

(后续章节)gptransfer为了更好的性能,建议使用gptransfer 迁移数据到相同大小或者更大的集群。

避免使用--full 或者--schema-only 选项。

建议使用其他方法拷贝数据库模式到目标数据库,然后迁移数据。

迁移数据前删除索引,迁移完成后重建索引。

使用 SQL COPY 命令迁移小表到目标数据库。

使用 gptransfer 批量迁移大表。

在正式迁移生产环境前测试运行gptransfer。

试验--batch-size 和--sub-batch-size 选项以获得最大平行度。

如果需要,迭代运行多次gptransfer 来确定每次要迁移的表的批次。

仅使用完全限定的表名。

表名字中若含有点、空格、单引号和双引号,可能会导致问题。

如果使用--validation 选项在迁移后验证数据,则需要同时使用-x 选项,以在源表上加排它锁。

确保在目标数据库上创建了相应的角色、函数和资源队列。

gptransfer -t 不会迁移这些对象。

从源数据库拷贝postgres.conf 和pg_hba.conf 到目标数据库集群。

使用gppkg 在目标数据库上安装需要的扩展。

详见使用 gptransfer 迁移数据(后续章节)安全妥善保护gpadmin 账号,只有在必要的时候才能允许系统管理员访问它。

仅当执行系统维护任务(例如升级或扩容),管理员才能以gpadmin 登录Greenplum集群。

限制具有 SUPERUSER 角色属性的用户数。

GPDB中,身为超级用户的角色会跳过所有访问权限检查和资源队列限制。

仅有系统管理员具有数据库超级用户权限。

参考《Greenplum 数据库管理员指南》中的“修改角色属性”。

严禁数据库用户以gpadmin 身份登录,严禁以gpadmin 身份执行ETL或者生产任务。

为有登录需求的每个用户都分配一个不同的角色。

考虑为每个应用或者网络服务分配一个不同的角色。

使用用户组管理访问权限。

保护好 ROOT 的密码。

对于操作系统密码,强制使用强密码策略。

相关文档
最新文档