 Greenplum 精粹文集Group) 的 方 式将两台交换机连在一起,在服务器上将网卡通过 LACP(IEEE 802.3ad/802.1ax Link Aggregation Control Protocol)协议做绑定形 成链路聚合组 (LAG Link Aggregation Group),如下图所示: Big Date2.indd 24 16-11-22 下午3:38 Greenplum 精粹文集 ·网卡绑定采用 mode=4 (802.3ad),流量传输 hash 策略选用 xmit_hash_policy=layer3+4【((sourceport XOR dest port) XOR ((source IP XOR dest IP) AND 0xffff) modulo Greenplum 精粹文集Group) 的 方 式将两台交换机连在一起,在服务器上将网卡通过 LACP(IEEE 802.3ad/802.1ax Link Aggregation Control Protocol)协议做绑定形 成链路聚合组 (LAG Link Aggregation Group),如下图所示: Big Date2.indd 24 16-11-22 下午3:38 Greenplum 精粹文集 ·网卡绑定采用 mode=4 (802.3ad),流量传输 hash 策略选用 xmit_hash_policy=layer3+4【((sourceport XOR dest port) XOR ((source IP XOR dest IP) AND 0xffff) modulo- )】,这 样能保证流量均匀的打在多块网卡上,另外注意采用 mode4 绑定的 时候,一定要把交换机设置在 2.0GB),每个节点的网络 带宽达到 1GB/S 以上 (1 个万兆 ),CPU 主频在 2.6GHz 到 3GHz 左右, 每台机器部署 4~6 个 Primary Instance( 生产经验值 )。 Big Date2.indd 40 16-11-22 下午3:38 Greenplum 精粹文集 41 接下来,评估一下外部表加载数据的性能: 1) 一个 gpfdist 0 码力 | 64 页 | 2.73 MB | 1 年前3
 Greenplum Database 管理员指南 6.2.1................................................................................ - 142 - 设置序列为字段缺省值 .......................................................................................... - 142 - ..................................................................................... - 199 - SQL 值表达式 ................................................................................................ Greenplum Database 管理员指南 V6.2.1 版权所有:Esena(陈淼 +86 18616691889) 编写:陈淼 - 13 - Master 的连接数是有限的,缺省值为 250 个,如果要大规模提升连接的可用数 量,可以配置使用 GP 自带的 pgbouncer 连接池,这对于一些应用场景会很有帮助, 例如 SAS 等软件连接 GP 时,由于这些软件自身无法严格限制连接数,pgbouncer0 码力 | 416 页 | 6.08 MB | 1 年前3 Greenplum Database 管理员指南 6.2.1................................................................................ - 142 - 设置序列为字段缺省值 .......................................................................................... - 142 - ..................................................................................... - 199 - SQL 值表达式 ................................................................................................ Greenplum Database 管理员指南 V6.2.1 版权所有:Esena(陈淼 +86 18616691889) 编写:陈淼 - 13 - Master 的连接数是有限的,缺省值为 250 个,如果要大规模提升连接的可用数 量,可以配置使用 GP 自带的 pgbouncer 连接池,这对于一些应用场景会很有帮助, 例如 SAS 等软件连接 GP 时,由于这些软件自身无法严格限制连接数,pgbouncer0 码力 | 416 页 | 6.08 MB | 1 年前3
 Greenplum 介绍Greenplum 大数据平台的优势 ● 一次打包到处运行的平台:部署灵活,不受限于硬件环境和平台,无论裸机、私有云、公 有云均可部署。硬件环境的普适性,提供了极大的灵活性,解放了硬件平台的制约和绑定, 从而允许客户灵活选择最适合的方案,降低未来的迁移代价,而开发、运维人员无需要学 习新的数据库处理技术,人力成本也能够大大降低。 ● 处理和分析各种数据源的数据的平台:支持各种数据源,包括0 码力 | 3 页 | 220.42 KB | 1 年前3 Greenplum 介绍Greenplum 大数据平台的优势 ● 一次打包到处运行的平台:部署灵活,不受限于硬件环境和平台,无论裸机、私有云、公 有云均可部署。硬件环境的普适性,提供了极大的灵活性,解放了硬件平台的制约和绑定, 从而允许客户灵活选择最适合的方案,降低未来的迁移代价,而开发、运维人员无需要学 习新的数据库处理技术,人力成本也能够大大降低。 ● 处理和分析各种数据源的数据的平台:支持各种数据源,包括0 码力 | 3 页 | 220.42 KB | 1 年前3
 Greenplum数据仓库UDW - UCloud中立云计算服务商很⽅便的让数据仓库把⼀些⽐较⽼的数据移出数据仓库。 ⽬前udw⽀持的分区表类型有: range分区:把数据根据指定的范围进⾏分区,例如:时间范围、数值范围 list分区:把数据按照⼀个list的值进⾏分区,例如:产品的种类、地区 使⽤分区表的场景: � 数据表⾜够⼤:⼤表格是⽐较适合做分区的、如果你的表格有上亿⾏或者更多的的数据,可以通过分区把数据通过分区分为很多⼩的部分、从⽽提⾼性能。如果⼀个表只有⼏千⾏和⼏ ⼀个列表值分区 选择需要做分区的列 选择创建表格⽅式(heap表 ,append表、按列存储的表) 6.1.1 按照⽇期创建分区表 按照⽇期创建分区表 ⽇期划分的分区表使⽤⼀个⽇期或时间戳列做为分区键值列。可以按天或者按⽉进⾏分析。 您可以通过指定起始值(START),终⽌值(END)和增量⼦句(EVERY)指出分区的增量值,让 UDW 数据仓库来⾃动地⽣成分区。默认情况下,起始值总是包含的(闭区间),⽽终⽌值是排除 的(闭区间),⽽终⽌值是排除 的(开区间)。例如: 场景⼀:默认创建的分区表是heap表 CREATE TABLE p_store_sales( id int, date date, prices decimal(7,2) ) DISTRIBUTED BY (id) PARTITION BY RANGE (date) ( START (date '2016-01-01') INCLUSIVE0 码力 | 206 页 | 5.35 MB | 1 年前3 Greenplum数据仓库UDW - UCloud中立云计算服务商很⽅便的让数据仓库把⼀些⽐较⽼的数据移出数据仓库。 ⽬前udw⽀持的分区表类型有: range分区:把数据根据指定的范围进⾏分区,例如:时间范围、数值范围 list分区:把数据按照⼀个list的值进⾏分区,例如:产品的种类、地区 使⽤分区表的场景: � 数据表⾜够⼤:⼤表格是⽐较适合做分区的、如果你的表格有上亿⾏或者更多的的数据,可以通过分区把数据通过分区分为很多⼩的部分、从⽽提⾼性能。如果⼀个表只有⼏千⾏和⼏ ⼀个列表值分区 选择需要做分区的列 选择创建表格⽅式(heap表 ,append表、按列存储的表) 6.1.1 按照⽇期创建分区表 按照⽇期创建分区表 ⽇期划分的分区表使⽤⼀个⽇期或时间戳列做为分区键值列。可以按天或者按⽉进⾏分析。 您可以通过指定起始值(START),终⽌值(END)和增量⼦句(EVERY)指出分区的增量值,让 UDW 数据仓库来⾃动地⽣成分区。默认情况下,起始值总是包含的(闭区间),⽽终⽌值是排除 的(闭区间),⽽终⽌值是排除 的(开区间)。例如: 场景⼀:默认创建的分区表是heap表 CREATE TABLE p_store_sales( id int, date date, prices decimal(7,2) ) DISTRIBUTED BY (id) PARTITION BY RANGE (date) ( START (date '2016-01-01') INCLUSIVE0 码力 | 206 页 | 5.35 MB | 1 年前3
 Greenplum 排序算法冒泡排序 ● 插入排序 ● 快速排序 ● 堆排序 ● 基数排序 内排序算法 7 快速排序是最常用的排序算法,由Tony Hoare在1959年发明。 快速排序算法的三个步骤: ● 挑选基准值:从数列中挑选出一个基准元素,称为pivot ● 分割:重新排序数组,所有比基准元素小的元素排放到基准元素之前;所有比基 准元素大的元素排放到基准元素之后。分割完成后,我们完成了对基准元素的 排序,即基准元素在数组中的位置不再改变 快速排序算法: 10 堆排序是最常用的排序算法,由J.Williams在1964年发明。 ● 堆是一种近似完全二叉树的结构,最大值堆要求每个子节点的键值总是小于父 节点。最小值堆要求每个子节点的键值总是大于父节点。 堆排序算法 ● 步骤1:建立最大值堆,最大元素在堆顶 ● 步骤2:重复将堆顶元组移除并插入到排序数组,更新堆使其保持堆的性质 ● 步骤3:当堆的元素个数为零时,数组排序完毕 个顺串。 替换选择算法 25 ● 问题二:合并阶段假设存在N个输入缓冲区,如何高效的比较N个输入缓冲区的 最小值,并输出到输出缓冲区? 归并排序的三个问题 26 ● 假设顺串(长度为L)分布在K个文件中,顺串合并时需要K个输入缓冲区和1个输 出缓冲区,每次选取K个缓冲区的最小值,输出到输出缓冲区。最后,输出缓冲 区输出的顺串长度为L*K ● 算法复杂度 O(K* (L*K)) 顺串合并0 码力 | 52 页 | 2.05 MB | 1 年前3 Greenplum 排序算法冒泡排序 ● 插入排序 ● 快速排序 ● 堆排序 ● 基数排序 内排序算法 7 快速排序是最常用的排序算法,由Tony Hoare在1959年发明。 快速排序算法的三个步骤: ● 挑选基准值:从数列中挑选出一个基准元素,称为pivot ● 分割:重新排序数组,所有比基准元素小的元素排放到基准元素之前;所有比基 准元素大的元素排放到基准元素之后。分割完成后,我们完成了对基准元素的 排序,即基准元素在数组中的位置不再改变 快速排序算法: 10 堆排序是最常用的排序算法,由J.Williams在1964年发明。 ● 堆是一种近似完全二叉树的结构,最大值堆要求每个子节点的键值总是小于父 节点。最小值堆要求每个子节点的键值总是大于父节点。 堆排序算法 ● 步骤1:建立最大值堆,最大元素在堆顶 ● 步骤2:重复将堆顶元组移除并插入到排序数组,更新堆使其保持堆的性质 ● 步骤3:当堆的元素个数为零时,数组排序完毕 个顺串。 替换选择算法 25 ● 问题二:合并阶段假设存在N个输入缓冲区,如何高效的比较N个输入缓冲区的 最小值,并输出到输出缓冲区? 归并排序的三个问题 26 ● 假设顺串(长度为L)分布在K个文件中,顺串合并时需要K个输入缓冲区和1个输 出缓冲区,每次选取K个缓冲区的最小值,输出到输出缓冲区。最后,输出缓冲 区输出的顺串长度为L*K ● 算法复杂度 O(K* (L*K)) 顺串合并0 码力 | 52 页 | 2.05 MB | 1 年前3
 Pivotal Greenplum 最佳实践分享page/enabled 一般不建议直接修改/boot/grub/grub.conf文件或者/boot/grub/menu.lst 常用数据库参数 参数名 Master节点值 Segment节点值 checkpoint_segments 32 32 max_connections 500 2500 max_prepared_transactions 500 1000 尽量采用一个常用关联字段作为分布键,例如账号、客户号,这个可以提高关联条件的命中率,减少关联时数据重分布 (主要对大表) • 选用分布键同时考虑数据平均分布(一个例子,日志号不是最好的分布键,大量的空值导致资料倾斜) 物理模型经验分享(续) 分区表使用: • 不建议使用二级分区,二级分区不便于管理,而且Parser效率较低; • 二级分区可以用一级分区+Bitmap方式替 Instance数量  增加机器的内存  检查gp_vmem_protect_limit 参数, 确保其不要超过安全的最大值  在会话层面降低statement_mem 参数的设定值  在数据库层面降低statement_mem参数的设定值  在资源队列中限制内存使用量 OOM-解决办法  GPDB中通常的规则是,gp_vmem_protect_limit设置为:0 码力 | 41 页 | 1.42 MB | 1 年前3 Pivotal Greenplum 最佳实践分享page/enabled 一般不建议直接修改/boot/grub/grub.conf文件或者/boot/grub/menu.lst 常用数据库参数 参数名 Master节点值 Segment节点值 checkpoint_segments 32 32 max_connections 500 2500 max_prepared_transactions 500 1000 尽量采用一个常用关联字段作为分布键,例如账号、客户号,这个可以提高关联条件的命中率,减少关联时数据重分布 (主要对大表) • 选用分布键同时考虑数据平均分布(一个例子,日志号不是最好的分布键,大量的空值导致资料倾斜) 物理模型经验分享(续) 分区表使用: • 不建议使用二级分区,二级分区不便于管理,而且Parser效率较低; • 二级分区可以用一级分区+Bitmap方式替 Instance数量  增加机器的内存  检查gp_vmem_protect_limit 参数, 确保其不要超过安全的最大值  在会话层面降低statement_mem 参数的设定值  在数据库层面降低statement_mem参数的设定值  在资源队列中限制内存使用量 OOM-解决办法  GPDB中通常的规则是,gp_vmem_protect_limit设置为:0 码力 | 41 页 | 1.42 MB | 1 年前3
 Greenplum分布式事务和两阶段提交协议持久性,先把Redo Log写 入日志文件。Redo log记录修改数据对象的新值(After Image, AFIM) ■ Steal → Undo Log 允许Buffer Pool未提交事务所修改的脏页刷回到持久存储,为了保证原子性, 先把Undo Log写入日志文件。Undo Log记录修改数据对象的旧值(Before Image, BFIM) Solution: Logging Shadow Paging(LMDB) 16 Undo log(记录旧值) (Steal / Force) 恢复时,从后往前,对于未提 交的事务的日志做undo操 作。 日志 Greenplum分布式事务和两阶段提交协议持久性,先把Redo Log写 入日志文件。Redo log记录修改数据对象的新值(After Image, AFIM) ■ Steal → Undo Log 允许Buffer Pool未提交事务所修改的脏页刷回到持久存储,为了保证原子性, 先把Undo Log写入日志文件。Undo Log记录修改数据对象的旧值(Before Image, BFIM) Solution: Logging Shadow Paging(LMDB) 16 Undo log(记录旧值) (Steal / Force) 恢复时,从后往前,对于未提 交的事务的日志做undo操 作。 日志- Redo log(记录新值) (No-Steal / No-Force) 恢复时,从前往后,对提交的事务 的日志做redo操作。 日志 - Undo+Redo log(记录旧值和新值) (Steal / No-Force) 恢复时,从前往后对提交事务做 redo操作,从后往前对未提交事务 做undo操作 。 日志 0 码力 | 42 页 | 2.12 MB | 1 年前3 Brin Index主Greenplum 7中的理论与实现Brin在AppendOnly Table上的实现 性能测试 5 Confidential │ ©2021 VMware, Inc. Block Range Index 存储数据块中元组字段的最 大最小值,用于过滤不符合条 件的数据块 1 3 2 5 7 8 8 10 9 11 11 12 [1, 5] [7, 10] [9, 12] Brin Heap Confidential bit map Confidential │ ©2021 VMware, Inc. Insert Update Delele 每个元组代表一组Block每个字段的最大最小值 如果新的数据超出了最大最小值的范围,则更新元组 删除数据时不做任何操作 Confidential │ ©2021 VMware, Inc. Brin Vacuum vacuum不做任何操作 vacuum │ ©2021 VMware, Inc. Brin Storage Revmap是一个逻辑上的数组,数组下标代表BlockNumber Revmap的value是TID,指向存储有最大最小值的tuple Confidential │ ©2021 VMware, Inc. 目录 Brin Index AppendOnly Table Brin在AppendOnly Table上的实现0 码力 | 32 页 | 1.04 MB | 1 年前3 Brin Index主Greenplum 7中的理论与实现Brin在AppendOnly Table上的实现 性能测试 5 Confidential │ ©2021 VMware, Inc. Block Range Index 存储数据块中元组字段的最 大最小值,用于过滤不符合条 件的数据块 1 3 2 5 7 8 8 10 9 11 11 12 [1, 5] [7, 10] [9, 12] Brin Heap Confidential bit map Confidential │ ©2021 VMware, Inc. Insert Update Delele 每个元组代表一组Block每个字段的最大最小值 如果新的数据超出了最大最小值的范围,则更新元组 删除数据时不做任何操作 Confidential │ ©2021 VMware, Inc. Brin Vacuum vacuum不做任何操作 vacuum │ ©2021 VMware, Inc. Brin Storage Revmap是一个逻辑上的数组,数组下标代表BlockNumber Revmap的value是TID,指向存储有最大最小值的tuple Confidential │ ©2021 VMware, Inc. 目录 Brin Index AppendOnly Table Brin在AppendOnly Table上的实现0 码力 | 32 页 | 1.04 MB | 1 年前3 Greenplum 6新特性:
在线扩容工具GPexpand剖析每个pair组的id,master-standby为-1,primary-mirror从0开始递增 role ‘p’ primary,‘m’ mirror preferred_role 初始化时的值,对于一个被promote成primary的mirror节点,role 为’p’,preferred_role为’m’ mode 主从同步状态,’s’同步,’n’不同步 status 运行状态,’u’在线,’d’不在线 6里引入了numsegments ▪ Numsegments描述了该表连续分布的segment数量,默认与集群大小一致。对每个 表执行操作时也会按照numsegment值分配Gang ▪ 增加新节点后,对每个表做EXPAND后该值会随着改成新集群的大小 改进与实现 改进与实现 • EXPAND每个表 – 对表加最高级别锁(其他读写均被阻塞) – 移动数据到新节点 – 修改numsegments0 码力 | 37 页 | 1.12 MB | 1 年前3 Greenplum 6新特性:
在线扩容工具GPexpand剖析每个pair组的id,master-standby为-1,primary-mirror从0开始递增 role ‘p’ primary,‘m’ mirror preferred_role 初始化时的值,对于一个被promote成primary的mirror节点,role 为’p’,preferred_role为’m’ mode 主从同步状态,’s’同步,’n’不同步 status 运行状态,’u’在线,’d’不在线 6里引入了numsegments ▪ Numsegments描述了该表连续分布的segment数量,默认与集群大小一致。对每个 表执行操作时也会按照numsegment值分配Gang ▪ 增加新节点后,对每个表做EXPAND后该值会随着改成新集群的大小 改进与实现 改进与实现 • EXPAND每个表 – 对表加最高级别锁(其他读写均被阻塞) – 移动数据到新节点 – 修改numsegments0 码力 | 37 页 | 1.12 MB | 1 年前3 Greenplum 分布式数据库内核揭秘Distribution) 数据分布策略 Confidential │ ©2021 VMware, Inc. 10 哈希分布是分布式数据库最为常用的数据分布方式。根据用户自定义的分布键计算哈希值,然后将 哈希结果映射到某个 Segment 上。在 Greenplum 6 中,默认采用一致性哈希(Jump Consistent Hash)分布策略。 哈希分布 当增加一个新的节点时,需要对原 这一年的数据分成 366 个分区: l 列表分区:按照某个列的数值列表,将数据分到不同的分区。譬如以下 SQL 将根据性别创建一个分区表, 共有 3 个分区: 一个分区存储男士数据,一个分区存储女士数据。对于其它值譬如 NULL,在存储在默认 分区 others 中: 分区表 Confidential │ ©2021 VMware, Inc. 13 Greenplum 支持多态存储,即单张用户表,可以根据访问模式的不同而使用不同的存储方式存储0 码力 | 31 页 | 3.95 MB | 1 年前3 Greenplum 分布式数据库内核揭秘Distribution) 数据分布策略 Confidential │ ©2021 VMware, Inc. 10 哈希分布是分布式数据库最为常用的数据分布方式。根据用户自定义的分布键计算哈希值,然后将 哈希结果映射到某个 Segment 上。在 Greenplum 6 中,默认采用一致性哈希(Jump Consistent Hash)分布策略。 哈希分布 当增加一个新的节点时,需要对原 这一年的数据分成 366 个分区: l 列表分区:按照某个列的数值列表,将数据分到不同的分区。譬如以下 SQL 将根据性别创建一个分区表, 共有 3 个分区: 一个分区存储男士数据,一个分区存储女士数据。对于其它值譬如 NULL,在存储在默认 分区 others 中: 分区表 Confidential │ ©2021 VMware, Inc. 13 Greenplum 支持多态存储,即单张用户表,可以根据访问模式的不同而使用不同的存储方式存储0 码力 | 31 页 | 3.95 MB | 1 年前3
共 15 条
- 1
- 2













