Greenplum 分布式数据库内核揭秘种数据分布策略: l 哈希分布 (Hash Distribution) l 随机分布 (Randomly Distribution) l 复制分布 (Replicated Distribution) 数据分布策略 Confidential │ ©2021 VMware, Inc. 10 哈希分布是分布式数据库最为常用的数据分布方式。根据用户自定义的分布键计算哈希值,然后将 哈希结果映射到某个 Segment 中,默认采用一致性哈希(Jump Consistent Hash)分布策略。 哈希分布 当增加一个新的节点时,需要对原有数据进行重新映射。一致性哈希则保证了在重新映射的过程追 中,tuple 要么保留在原有节点中,要么迁移至新的节点中,从而实现最小数据迁移。 Confidential │ ©2021 VMware, Inc. 11 随机分布则采用随机的方式将数据存储到不同的节点。当不确定一张表的哈希分布键,或者是不存 布键,或者是不存 在合理的避免数据倾斜的分布键时,即可采用随机分布的方式。 随机分布与复制分布 复制分布则表示整张表在每个节点上都有一份完整的拷贝,假设我们有 100 个节点,复制表则会将 数据保存 100 份。复制表可避免生成分布式查询计划,而是生成本地计划,从而避免数据在集群的 不同节点间移动。 Confidential │ ©2021 VMware, Inc. 12 除了支持数据在不同的0 码力 | 31 页 | 3.95 MB | 1 年前3
Greenplum数据仓库UDW - UCloud中立云计算服务商图形界⾯的⽅式访问UDW 数据导⼊ 数据导⼊ insert加载数据 copy加载数据 外部表并⾏加载数据 从hdfs加载数据 从mysql中导⼊数据 从oracle中导⼊数据 从ufile加载数据 开发指南 开发指南 1、连接数据库 2、数据库管理 3、模式管理 4、表格设计 5、加载数据 6、分区表 7、序列 8、索引 9、 ANALYZE/VACUUM 10、常⽤SQL⼤全 139 139 139 141 142 146 152 152 163 177 177 183 190 190 191 192 udw优化指南 表膨胀 表膨胀 表膨胀的原因 如何避免表膨胀 UDW中 中Json类型 类型 Json相关操作 Json操作举例 Json相关函数 Json创建函数 Json处理函数 接⼊第三⽅ 接⼊第三⽅ BI ⼯具 ⼯具 导出数据 使⽤ psql 重建数据 利⽤ 利⽤ hdfs 外部表迁移数据 外部表迁移数据 1. 在原 greenplum 集群中创建 hdfs pxf 可写外部表 2. 将原 greenplum 集群表数据写⼊ hdfs 3. 在⽬的 greenplum 集群中创建 hdfs pxf 可读表 4. 从 hdfs 外部表中读取数据并写⼊⽬的 greenplum 集群 FAQs 创建好数据仓库之后怎么连接到UDW?0 码力 | 206 页 | 5.35 MB | 1 年前3
Greenplum 6新特性:
在线扩容工具GPexpand剖析Greenplum 集群部署 Greenplum 集群部署 • gp_distribution_policy 字段名 描述 localoid 表的OID policytype 分布类型 ‘p’ 分区 ‘r’ 复制表 numsegments 表分布在多少个节点上 diskkey 分布列的序号 distclass 分布列的操作类 GPExpand简介与具体用法 • GPExpand是 gpexpand schema下面会创建几张表 ▪ status —扩容状态 ▪ status_detail —将所有需要扩容的表都存到这个表里 ▪ expansion_progress —记录扩容时的状态 GPExpand简介与具体用法 • 数据重分布 – GPExpand – 会遍历postgres数据库下面gpexpand.status_detail表对所有表执行 ALTER TABLE {schema {schema.table} EXPAND TABLE; GPExpand简介与具体用法 • 清理 – gpexpand –c – 会将gpexpand schema和下面关于扩容的表都清理掉 Greenplum 6中GPExpand的改进与实现 • 在线不停机 • 数据重分布优化 • 并行的优化 改进与实现 • 如何做到不停机 – 增加新节点只要在gp_segment_con0 码力 | 37 页 | 1.12 MB | 1 年前3
Greenplum数据库架构分析及5.x新功能分享Scatter/Gather 流处理 在线系统扩展 任务管理 服务 加载 & 数据联邦 高速数据加载 近实时数据加载 任意系统数据访问 存储 & 数据访问 混合存储引擎(行存&列存) 多种压缩,多级分区表 索引(B树,位图,GiST) 安全性 语言支持 标准SQL支持,SQL 2003 OLAP扩展 支持 MapReduce 扩展编程语言 (Python,R, Java, Perl, C/C++) SELECT COUNT(*) FROM orders WHERE order_date >= ‘Oct 20 2007’ AND order_date < ‘Oct 27 2007’ & orders 表数据均匀分布于各个节点 仅仅扫描 orders 表相关的分区 Segment 1A Segment 1B Segment 1C Segment 1D Segment 2A Segment 2B Segment Segment 3A Segment 3B Segment 3C Segment 3D 10 Pivotal Confidential–Inter nal Use Only 多级分区存储 • 哈希Distribution:数据均 匀的分布到各个数据节点 • 范围分区: 数据节点内部, 根据多种规则分区,降低扫 描量 数据集 Segment 1A Segment 1C Segment 1D0 码力 | 44 页 | 8.35 MB | 1 年前3
完全兼容欧拉开源操作系统的 HTAP 数据平台 Greenplumdeadlockdetector) 这项技术对性能提升特别是 Update 和 Delete 至关重要。锁是数据库中实现并发控制的重要技术,随之而来的死锁 处理。Greenplum 创新性的采用了分布式死锁检测,更新删除表的锁级别已降低,支持并发更新删除操作,大大提 升了处理性能。 并发控制优化 Greenplum 6 除了全局死锁检测,还引入了多项其他并发控制优化方法,这些优化对 SELECT 和 INSERT Greenplum 6 实现了不停库在线增加新节点, 期间不会中断正在运行的所有查询;另外采用了 Jump Consistent Hash 的一致性哈希算法, 在数据重分布期间,每个旧节点仅移动出需要移动的数据到新节点上, 得益于创新的分布式死锁检测, 对于大量小表做并行重分布性能提升非常明显。 Greenplum VACUUM 提升 将在 Greenplum 7 中实现此功能,能够做到: 没有必要的索引扫描 l 避免无用的堆截断尝试并在 VACUUM 期间采取独占锁定 l 提高 VACUUM 删除尾随空堆页面的速度 l 可以选择使用 SKIP_LOCKED 选项来跳过对无法立刻被锁的表进行 VACUUM 和 ANALYZE l 可以使用--jobs 选项并行进行 VACUUMDB 和 VACUUM;也支持—skip-locked Greenplum 集群多站点复制0 码力 | 17 页 | 2.04 MB | 1 年前3
Greenplum 排序算法方式:哈希聚集和分组聚集。 ● 分组聚集应用了排序的思想,如果数据基于分组键有序,那么聚集可以拆解为 若干个朴素聚集的组合。 ● SELECT avg(score) FROM student GROUP BY grade; 分组聚集 44 ● Greenplum连接算法包括:嵌套循环连接,哈希连接和归并连接。 ● 归并连接同样应用了排序的思想,如果数据基于排序键有序,那么两个表的连 接0 码力 | 52 页 | 2.05 MB | 1 年前3
Greenplum Database 管理员指南 6.2.1..................................................................................... - 85 - 创建与管理表空间 ................................................................................................. ......................... - 87 - 创建表空间 ................................................................................................................ - 89 - 使用表空间存储 DB 对象 ......................... ................................... - 90 - 查看现有的表空间和文件空间 ................................................................................ - 91 - 删除表空间和文件空间 ..........................................0 码力 | 416 页 | 6.08 MB | 1 年前3
Greenplum 精粹文集join 技术:hash join、merge join、nestloop join 的支持方面,Mysql 只支持最后一种 nestloop join(据说未来会支持 hash join),而多个大表关联分析时 hash join 是必备的利器,缺少这些关键功能非常致命,将难于在 OLAP 领域充当大任。我们最近对基于 MYSQL 的某内存分布式数据库做 对比测试时,发现其优点是 OLTP 非常快,TPS Greenplum 还研发了非常多的高级数据分析管理功能和企业级管理模 块,如下这些功能都是 Postgresql 没有提供的: ·外部表并行数据加载 ·可更新数据压缩表 ·行、列混合存储 ·数据表多级分区 ·Bitmap 索引 ·Hadoop 外部表 ·Gptext 全文检索 ·并行查询计划优化器和 Orca 优化器 ·Primary/Mirror 镜像保护机制 ·资源队列管理 Postgresql 实 例 都 是 并 行 工 作 的, 这 种 并 行 的 Style 贯 穿 了 Greenplum 功能设计的方方 面面: 外部表数据加载是并行的、 查询计划执行是并行的、索 引的建立和使用是并行的, 统计信息收集是并行的、表 关联(包括其中的重分布或 广播及关联计算)是并行的,排序和分组聚合都是并行的,备份恢复 也是并行的,甚而数据库启停和元数据检查等维护工具也按照并行方0 码力 | 64 页 | 2.73 MB | 1 年前3
Pivotal Greenplum 最佳实践分享M22 统计信息收集 对于系统表和用户表需要收集统计信息,GPDB的查询计划是cost base的,统计信息的准确性对查询 计划的优劣有很大影响; 对于字段数较多的表,可关闭gp_autostate_mode (on_no_stats=>none),仅对必要列执行Analyze, 只在结果中返回的列无需收集统计信息; 对于频繁创建表删表的系统,可关闭gp_autostate_mode(on_no_stats=> all用truncate代替,truncate无需回收垃圾空间 垃圾空间回收 Vacuum:标记垃圾空间为可再利用 Vacuum用于将数据表垃圾空间标记到FSM(自由空间映射),一般也不回收空间,当往该表插入新数据时,数据库会重 新这些空间。 FSM驻留在内存中,FSM的大小必须足够标记数据库中的所有过期记录。如果尺寸不够大,超出自由映像空间的过期记录 占用 Reorganize相当于重建表,数据表对应的文件名(pg_class -> relfilenode)将会发生改变。 Vacuum Full的处理性能非常低,一般情况下不建议采用,可以用Reorganize代替、或者使用AO表; 系统表不支持Reorganize操作,因此,需要定期vacuum,例如设置定时作业,每周对所有系统表vacuum analyze一次 • 查询视图GP_TOOLKIT0 码力 | 41 页 | 1.42 MB | 1 年前3
Greenplum 6: 混合负载的理想数据平台完备生态、支撑核心生产系统 13 Pivotal Confidential–Internal Use Only 列式存储 表‘SALES’ 表‘SALES’ ■ 更适合压缩 ■ 查询部分列时速度快 ■ 不同列可以使用不同压缩方式 amount cust_id 表 orders 14 Pivotal Confidential–Internal Use Only Segment 1A Segment COUNT(*) FROM orders WHERE order_date >= ‘Oct 1 2007’ AND order_date <= ‘Oct 31 2007’ 仅仅扫描 orders 表2017年十月份数据所在的分区C Segment 1A Segment 1B Segment 1C Segment 1D Segment 2A Segment 2B Segment 2C Segment Segment 3A Segment 3B Segment 3C Segment 3D 15 Pivotal Confidential–Internal Use Only 递归查询 表‘SALES’ 表‘SALES’ ■ 层次结构 ■ 树状结构 WITH RECURSIVE included_parts(sub_part, part, quantity) AS ( SELECT0 码力 | 52 页 | 4.48 MB | 1 年前3
共 27 条
- 1
- 2
- 3













