Gaussdb(for opengauss)分布式-GTM
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gaussdb(for opengauss)分布式-GTM相关的知识,希望对你有一定的参考价值。
XID介绍
在PG中每个事务被赋予唯一ID,称为事务ID(XID),XID按升序提供用来区分事务的新/旧。
每个元组存在一组xid,用来支持创建和删除元组的事务,如果改元组为活动事务创建则不会提交或中止。
这些信息存放在xmin和xmax字段中。
这些“xmin”和“xmax”用于确定哪一行对事务可见。
为此,PostgreSQL需要一个数据来指示正在运行的事务,这称为“快照”。
GTM 介绍
事务管理和可见性检查从节点中提取并拉入GTM,GTM收集事务所有状态(运行,已提交,已终止等)。
以全局提供快照(全局快照)。请注意,每个全局快照都包含由其他协调器或数据节点启动的 GXID。
这是必需的,因为某些较旧的事务可能会在一段时间后访问新服务器。
在这种情况下,如果快照中不包含此类事务的 GXID,则该事务可能被视为“足够旧”,
并且可能会读取未提交的行。如果此类事务的 GXID 从一开始就包含在快照中,则不会发生此类不一致。
为此引入了一个名为GTM(全局事务管理器)的专用组件。GTM 在其中一台服务器上运行,
并为 Postgres-XL 服务器上运行的每个事务提供唯一且有序的事务 ID。因为这是一个全局唯一的ID,所以我们称之为GXID(全局事务ID).
GTM接收来自事务的GXID请求并提供GXID。它还会在开始和完成时跟踪所有事务,
以生成用于控制每个元组可见性的快照。因为这里的快照也是一个全局属性,所以它被称为全局快照。
高斯GTM模式
GTM-Lite模式:enable_gtm_free=off 且 gtm_option=1;
采用CSN技术优化事务处理流程,有效提高并发处理能力,支持分布式事务强一致性读
GTM-Free模式:enable_gtm_free=on 或 gtm_option=2
GTM不在参与事务管理,消除GTM瓶颈,不支持分布式事务强一致性读
GTM参数配置查看
GTM-Lite逻辑图
CSN机制
每个非只读事务在运行过程中会取得一个xid号,在事务提交时会推进CSN
同时会将当前CSN与事务的xid映射关系保存起来(CSNLOG)。
实心竖线标识取snapshot(快照)时刻,会获取最新提交CSN(3)的下一个值4。
TX1、TX3、TX5已经提交,对应的CSN号分别是1、2、3。
TX2、TX4、TX6正在运行,TX7、TX8是未来还未开启的事务。
对于当前snapshot而言,严格小于CSN号4的事务提交结果均可见;
其余事务提交结果在获取快照时刻还未提交,不可见!!!
以上是关于Gaussdb(for opengauss)分布式-GTM的主要内容,如果未能解决你的问题,请参考以下文章
猿创征文|GaussDB(for openGauss):基于 GaussDB 迁移智能管理构建应用解决方案
猿创征文|GaussDB(for openGauss):基于 GaussDB 迁移智能管理构建应用解决方案
猿创征文|GaussDB(for openGauss):基于 GaussDB 迁移智能管理构建应用解决方案
GaussDB精品课第1期GaussDB(for openGauss)数据库,打造自研世界级产品