postgresql Two-phase commit

postgresql Two-phase commit,第1张

概述对于XA的支持,pg目前没明确提出来,只是实现了两阶段提交,   XID这个名词已被占用,所以提出了GID a global transaction identifier   create table a(a int);   begin;   insert a values(1);   prepare transaction 'aaa';   commit prepared 'aaa';   ro

对于XA的支持,pg目前没明确提出来,只是实现了两阶段提交,

XID这个名词已被占用,所以提出了GID a global transactionIDentifIEr

create table a(a int);

begin;

insert a values(1);

prepare transaction 'aaa';

commit prepared 'aaa';

rollback prepared 'aaa';

目前支持这样的语法,'aaa' 就是GID,具体见下

http://www.postgresql.org/docs/current/static/sql-prepare-transaction.html

下面是全局事务的定义,就是比局部事务上多了几个变量,是专门的一个列表,和普通事务的不一样

在 prepare transaction的时候,在数据库的目录的 pg_twophase 文件夹生成state file,文件名为事务的XID,

prepare transaction

要生成state file的主要原因是,在这一过程中,已完成了资源的释放,把不能释放的记录下来,以便commit时候释放

commit prepared

把state file读出来解析,接着释放资源,之后就是记录日志,并把state file删除

当在prepare transaction成功,之后系统挂掉,这时state file已创建成功,保留在硬盘上,当系统重启后,会根据日志和state file重构XA事物,在系统启动完成后,可以接着 commit prepared 或 rollback prepared 这个事物。

总结

以上是内存溢出为你收集整理的postgresql Two-phase commit全部内容,希望文章能够帮你解决postgresql Two-phase commit所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1180086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存