Greenplum分布式事务和两阶段提交协议https://cn.greenplum.org 博文 资料 文档 项目 全新的问答论坛 分布式事务和 两阶段提交协议 6 ● 事务实现原理和Write Ahead Logging(WAL) ● 分布式事务和两阶段提交的原理 ● Greenplum两阶段提交协议的实现 ● Greenplum两阶段提交协议的优化 Outline 7 事务的属性:ACID 属性 含义 数据库系统的实现 Atomic Atomic 原子性 事务中的操作要么全部正确执行,要么完全不 执行。 Write Ahead Logging,分布式事务:两阶段提交协议 Consistency 一致性 数据库系统必须保证事务的执行使得数据库 从一个一致性状态转移到另一个一致性状态。 (满足完整性约束) 实现对A、I、D三个属性的支持 Isolation 隔离性 多个事务并发地执行,对每个事务来说,它并 不会感知系统中有其他事务在同时执行。 不会感知系统中有其他事务在同时执行。 多版本并发控制Multi-Version Concurrency Control、 两阶段加锁(Two Phase Locking, 2PL)、乐观并发控制 (OCC) Durability 持久性 一个事务在提交之后,该事务对数据库的改变 是持久的。 Write Ahead Logging + 存储管理 Jim Gray于1981年VLDB描述了事务的原子性、0 码力 | 42 页 | 2.12 MB | 1 年前3
Greenplum 精粹文集Startup 公司,创始人家门口有 一棵青梅 ——greenplum,因此而得名)召集了十几位业界大咖(据 说来自 google、yahoo、ibm 和 TD),说干就干,花了一年多的时间 完成最初的版本设计和开发,用软件实现了在开放 X86 平台上的分布 式并行计算,不依赖于任何专有硬件,达到的性能却远远超过传统高 昂的专有系统。 Big Date2.indd 2 16-11-22 下午3:38 优化、 开发 Interconnect 这个核心软件组件。最终实现了对同一个集群中多 个 Postgresql 实例的高效协同和并行计算,Interconnect 承载了并行 查询计划生产和 Dispatch 分发(QD)、协调节点上 QE 执行器的并 行工作、负责数据分布、Pipeline 计算、镜像复制、健康探测等等诸 多任务。 在 Greenplum 开源以前,据说一些厂商也有开发 MPP 只 要专注在分布式技术中最核心的并行处理技术上面,协调我们下面 的轮子跑的更快更稳才是我们的最终目标。而数据库底层组件就像 车轮一样,经过几十年磨砺,数据库引擎技术已经非常成熟,大可 不必去重新设计开发,而且把数据库底层交给其它专业化组织来开 发(对应到 Postgresql 就是社区),还可充分利用到社区的源源不 断的创新能力和资源,让产品保持持续旺盛的生命力。 这也是我们在用户选型时,通常建议用户考察一下底层的技术支撑0 码力 | 64 页 | 2.73 MB | 1 年前3
Greenplum Database 管理员指南 6.2.1Greenplum 用户解决生产需求和技术问题,我们坚持提供最专 业的建议和解决方案,提供最专业的技术支持服务,提供最专业的落地实施支持。 十多年来,参与过的项目不计其数,有 POC 测试,有开发支持,有故障支持,有 长期驻场支持,有临时的功能支持,甚至可能会作为用户看不见的后端支持,总之,我 们的目标是,努力解决用户的一切不违背自然规律的诉求,我们跟随着 Greenplum 的 成长,见证了 接口(APIs(如 JDBC、ODBC))连接 GP。不过,GP 在 5 版本和 6 版本中,因为 PostgreSQL 版本的不断合并,有不少系统表的发生了变化,所以,原有适用的客户 端,可能需要一定的适配开发工作,才能适用新的 GP 版本,编者目前在对 pgAdminIII 进行 5 版本和 6 版本的适配和改造,主要服务商业付费用户。 Master 上存储着全局系统表(Global System 布式数据库的一个基本特征是,用户和客户端程序在访问时如同访问一个单机数据库 (GP 访问 Master)一样方便,数据库内部的分布式实现不需要用户过多的关心,对于 客户端应用来说,访问 GP 数据库与单机数据库没有什么区别。不过,对于开发人员和 DBA 来说,要更好的用好 GP 数据库,还是需要了解和掌握分布式数据库的概念,了解 GP 的架构和工作原理,这样才能更好的发挥 GP 的分布式优势,也就是说,学好这些 知识是极其重要的。和很多0 码力 | 416 页 | 6.08 MB | 1 年前3
完全兼容欧拉开源操作系统的 HTAP 数据平台 Greenplum器、云计算、边缘计算、嵌入式等应用场景,支持多样性计算,致力于提供安全、稳定、易用的操作系统。通过为应用 提供确定性保障能力,支持 OT 领域应用及 OT 与 ICT 的融合。 欧拉开源社区通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系,孵化支持多种 处理器架构、覆盖数字设施全场景,推动企业数字基础设施软硬件、应用生态繁荣发展。 openEuler 作为一个操作系统发行版平台,每两年推出一个 openEuler 也是一个技术孵化器。通过每半年发布一次的创新版,快速集成 openEuler 以及其他社区的最新技术成 果,将社区验证成熟的特性逐步回合到发行版中。这些新特性以单个开源项目的方式存在于社区,方便开发者获得源代 码,也方便其他开源社区使用。 社区中的最新技术成果持续合入发行版,发行版通过用户反馈反哺技术,激发社区创新活力,从而不断孵化新技术。 发行版平台和技术孵化器互相促进、互相推动、牵引版本持续演进。 21.09 Edge、面向嵌入式的版本 openEuler 21.09 Embedded。 openEuler 希望与广大生态伙伴、用户、开发者一起,通过联合创新、社区共建,不断增强场景化能力,最终实现统一 操作系统支持多设备,应用一次开发覆盖全场景。 openEuler 平台架构 openEuler 是覆盖全场景的创新平台,在引领内核创新,夯实云化基座的基础上,面向计算架构互联总线、存储介质0 码力 | 17 页 | 2.04 MB | 1 年前3
Greenplum开源MPP数据库介绍q 聚集 (grouping sets, 多阶段聚集…) q 窗口函数, (Recursive) CTE q Procedure Languages(Python,R,Perl……) Ø 优化器非常非常重要 Ø 基于规则优化和基于代价优化 Confidential │ ©2022 VMware, Inc. 10 ORCA Ø 历时十年,独立开发 Ø Cascades 架构 Ø OLAP性能很棒 ©2022 VMware, Inc. 14 分布式执行和事务 Ø MVCC q Xmin, Xmax 是节点本地的 Ø 分布式快照 q QD生成,下发给QE q segment本地事务异步两阶段提交,保持一致性 Ø HTAP 优化 q 全局死锁检测 q 只读事务、只涉及到某个节点的操作、vacuum Ø SIGMOD 2021: Greenplum: A Hybrid Database0 码力 | 23 页 | 4.55 MB | 1 年前3
Greenplum 分布式数据库内核揭秘Confidential │ ©2021 VMware, Inc. Greenplum 分布式数 据库内核揭秘 Greenplum内核开发工程师 2022-03-16 李正龙 Confidential │ ©2021 VMware, Inc. Agenda 2 - Greenplum 分布式数据库简介 - Greenplum 集群化概述 - 分布式数据存储与多态存储 - 分布式查询优化器与执行器 Key: brand -> Redistribute Motion 3:3 (slice1; segments: 3) Hash Key: brand -> Seq Scan on sales 一阶段聚集 l 我们需要对所有数据进行重分布,网络开销昂贵 l 若分组数量远小于集群节点数量,则会造成严重的计算倾斜 Confidential │ ©2021 VMware, Inc. 23 Multi-Stage Motion 3:3 Hash Key: sales.brand -> HashAggregate Group Key: sales.brand -> Seq Scan on sales 二阶段聚集 l 此时,只需要对在各个节点聚合后的数据进行重分布 l 但需要额外实现 combine() 方法 24 Confidential │ ©2021 VMware, Inc. Greenplum0 码力 | 31 页 | 3.95 MB | 1 年前3
Greenplum 6: 混合负载的理想数据平台高效更改和删除 ■ 适合需要全部或者多数列的查询 表 orders 索引 Greenplum支持以下索引: • Btree • Bitmap • Gist • GIN • BRIN (开发中) <10ms的访问 时间,即使是 上亿条记录 <~ 100 不同值 B-Tree Bitmap 地理空间 区域 Gist 文本倒排 索引 GIN 28 Pivotal C 表‘SALES’ 表‘SALES’ ■ 大幅减少事务开始和结束时的锁冲突 ■ 消除隐式只读操作(单条SELECT)的锁冲突 ■ 避免显式只读事务(BEGIN-SELECT-END)的两阶段提交 (开发中) ■ fastpath锁(PostgreSQL合并) 32 Pivotal Confidential–Internal Use Only TPC-B基准测试:环境 基于谷歌云平台(Google0 码力 | 52 页 | 4.48 MB | 1 年前3
基于 Greenplum 打造SaaS化电商服务平台担极端复杂的在线分 析,有待验证 数据集市 报表 CRM 胜算 …… …… …… …… 数据仓库演变 2015 2016 2017 2018 2019 2014原始阶段 2016.4全新报表界面:梳理业务、开发报表 2016.9自建GP集群,上线工作量统计 2018.3HDB4PG 2017.1报表全面迁移至GP 2017.6集群拆分 2018.9全面切换HDB4PG 20180 码力 | 7 页 | 547.94 KB | 1 年前3
Greenplum 排序算法8 20 ● 堆排序算法 堆排序 21 ● 归并排序分为两个阶段,阶段一是分割阶段,将原始待排序数据分成若干个顺 串。阶段二是合并阶段,将所有小顺串合并成一个包含所有数据的大顺串 外排序之归并排序 1 7 4 8 1 7 4 8 1 4 7 8 待排序数据 分割阶段 合并阶段 22 ● 问题一:分割阶段只需要顺序扫描一次外存,最简单的策略是读取外存数据,加 载到内存,当内 空内存,继续读取外存数据,如此反复,直到所有外存数据处理完毕。该算法生 成的每一个顺串的大小都不会超过内存的大小,而顺串越小,合并阶段的代价 就越高,需要读取外存的次数也越多,有没有办法在分割阶段就生成大于内存 大小的顺串呢? 归并排序的三个问题 23 替换选择算法 24 Knuth 5.4.1R替换选择算法: ● 1. 初始化阶段,读取输入元组至内存,并建立最小堆。 ● 2. 弹出堆顶元组,输出到顺串文件的缓冲区,并记录该元组的排序键为 并将堆的大小减1。 ● 5. 重复第2步,直至堆大小变为0。 ● 6. 顺串生成完毕。将堆大小重置为N,并重新建堆。重复第2步,开始生成下一 个顺串。 替换选择算法 25 ● 问题二:合并阶段假设存在N个输入缓冲区,如何高效的比较N个输入缓冲区的 最小值,并输出到输出缓冲区? 归并排序的三个问题 26 ● 假设顺串(长度为L)分布在K个文件中,顺串合并时需要K个输入缓冲区和1个输0 码力 | 52 页 | 2.05 MB | 1 年前3
Greenplum 6新特性:
在线扩容工具GPexpand剖析5及之前的版本对表的更新操作是串行的,所以大量小表做expand会在 更新状态表时遇到瓶颈 ▪ Greenplum 6中因为全局死锁检测的引入可以对heap表做并行更新 改进与实现 • 扩容期间对查询的影响 – 新增节点阶段无法修改catalog – 对于正在重分布的表的读写访问均会被阻塞 – 对于分布状态不相同的哈希分布表的Join无法做优化 Q&A Thank you0 码力 | 37 页 | 1.12 MB | 1 年前3
共 19 条
- 1
- 2













