【分布式事务 XA模式】MySQL XA模式详解

MYSQL中的XA事务

  • 写在前面
  • 1. XA事务的基本原理
  • 2. MySQL XA事务操作

写在前面

MySQL 的 5.0.3 版本开始支持XA分布式事务,并且只有innoDB存储引擎支持XA事务。

1. XA事务的基本原理

XA事务本质上是一种基于两阶段提交的分布式事务,分布式事务可以理解成多个数据库事务共同完成一个原子性的事务操作。参与操作的多个事务要么全部提交成功,要么全部提交失败。

XA事务支持不同数据库之间实现分布式事务。这里的不同数据库,可以是不通的MySQL实力,也可以是不同的数据库类型,比如MySQL数据库和sqlite数据库或者是oracle数据库。

XA事务由一个事务管理器、一个或者多个资源管理器和一个应用程序组成。

在这里插入图片描述

  • 事务管理器:主要对参与全局事务的各个分支事务进行协调,并与资源管理器进行通讯
  • 资源管理器:主要提供对事务资源的访问能力,可以把一个数据库看作一个资源管理器
  • 应用程序:主要用来明确全局事务和各个分支事务,指定全局事务中的各个操作

因为XA事务是基于两阶段提交的分布式事务,所以XA事务也被拆分为Prepare阶段和Commit阶段。

  1. 在Prepare阶段,事务管理器向资源管理器发送准备指令,资源管理器接受到指令后,执行数据的修改操作并记录相关日志信息,然后向事务管理器返回可以提交或者不可以提交的结果信息。

在这里插入图片描述

  1. 在Commit阶段,事务管理器接受所有资源管理器返回的结果信息,如果某一个或多个资源管理器向事务管理器返回的结果信息为不可以提交,或者超时,则事务管理器向所有资源管理器发送回滚指令。

在这里插入图片描述

  1. 如果事务管理器收到的所有资源管理器返回的结果信息为可以提交,则事务管理器向所有资源管理器发送提交事务的指令。

在这里插入图片描述

2. MySQL XA事务操作

  1. 开启XA事务,如果使用的是XA START命令而不是XA BEGIN命令,则不支持 JOIN 操作。xid 是一个唯一值,表示事务分支标识符。
XA {START|BEGIN} xid {JOIN}
  1. 提交一个XA事务,如果使用ONE PHASE命令,表示使用一阶段提交。在两阶段提交协议中,如果只有一个资源管理器参与操作,则可以优化为一阶段提交。
XA COMMIT xid [ONE PHASE]
  1. 结束一个XA事务
XA PREPARE xid
  1. 准备提交XA事务
XA PREPARE xid
  1. 回滚XA事务
XA ROLLBACK xid
  1. 列出所有处于准备阶段的XA事务
XA RECOVER [CONVERT XID]

MySQL XA 事务使用XID表示分布式事务,xid主要由以下几部分组成

xid: gtrib[, bqual [, formatID]]
  • gtrid:必须,为字符串,表示全局事务标识符。
  • bqual:可选,为字符串,默认为空串,表示分支限定符。
  • formatID:可选,默认值为1,用于标识gtrid和bqual值使用的格式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2807892.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【递归版】归并排序算法(1)

目录 MergeSort归并排序 整体思想 图解分析 代码实现 时间复杂度 递归&归并排序VS快速排序 MergeSort归并排序 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer&a…

【Web】CTFSHOW 常用姿势刷题记录(全)

目录 web801 web802 web803 web804 web805 web806 web807 法一:反弹shell 法二:vps外带 web808 web809 web810 web811 web812 web813 web814 web815 web816 web817 web818 web819 web820 web821 web822 web823 web824 web825…

神经网络系列---计算图基本原理

文章目录 计算图符号微分符号微分的步骤示例符号微分在计算图中的使用总结 数值微分前向差分法中心差分法数值微分的使用注意事项总结 自动微分1. 基本原理2. 主要类型3. 计算图4. 应用5. 工具和库6. 优点和缺点 计算图1. **计算图的建立**2. **前向传播**3. **反向传播**4. **…

【广度优先搜索】【网格】【割点】1263. 推箱子

作者推荐 视频算法专题 涉及知识点 广度优先搜索 网格 割点 并集查找 LeetCode:1263. 推箱子 「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 m x n 的网格 grid 表示,其中每个元素可以是墙、地板或…

【Java程序设计】【C00283】基于Springboot的校园志愿者管理系统(有论文)

基于Springboot的校园志愿者管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的校园志愿者管理系统 本系统分为系统功能模块、管理员功能模块以及志愿者功能模块。 系统功能模块:用户进入到系统…

Anaconda安装教程(图文+附完全卸载)

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

Linux下“一切皆文件”

“Linux下一切皆文件” Linux 下一切皆文件这个说法是指 Linux 系统中的一种设计理念,即将所有设备、资源和进程等抽象为文件或文件夹的形式。这种设计理念的好处在于统一了对待不同类型资源的方式,提供了统一的接口和工具来进行管理和操作。 Linux 下…

IO进程线程复习:进程线程、通信

1.进程的创建 #include<myhead.h>int main(int argc, const char *argv[]) {printf("hello world\n");//父进程执行的内容int num520;//在父进程中定义的变量pid_t pidfork();//创建子进程if(pid>0){while(1){printf("我是父进程&#xff0c;num%d\n&…

mongoose httpserver浅析

文章目录 前言一、结构体及其功能二、函数MG_LOGmg_http_listenmg_mgr_poll question参考链接 前言 mongoose是一款基于C/C的网络库&#xff0c;可以实现TCP, UDP, HTTP, WebSocket, MQTT通讯。mongoose是的嵌入式网络程序更快、健壮&#xff0c;易于实现。 mongoose只有mong…

MySQL学习笔记4: MySQL表的增删查改 (基础)

目录 前言1. 新增 insert补充: 插入时间日期 (datetime 类型的数据) 2. 查询 select2.1. 全列查询 select * from 表名;2.2. 指定列查询 select 列名,列名... from 表名;2.3. 表达式查询 select 表达式 from 表名;2.4. 给查询结果指定别名 select 表达式 as 别名 from 表名;2.5…

如何在Python中创建动态图形?

动态图形是使可视化更具吸引力和用户吸引力的好方法。它帮助我们以有意义的方式展示数据可视化。Python帮助我们使用现有强大的Python库创建动态图形可视化。Matplotlib是一个非常流行的数据可视化库&#xff0c;通常用于数据的图形表示&#xff0c;也用于使用内置函数的动态图…

Java 中常用的数据结构类 API

目录 常用数据结构API 对应的线程安全的api 高可用衡量标准 常用数据结构API ArrayList: 实现了动态数组&#xff0c;允许快速随机访问元素。 import java.util.ArrayList; LinkedList: 实现了双向链表&#xff0c;适用于频繁插入和删除操作。 import java.util.LinkedLis…

小妙招:Copilot 当跳板免费调用 GPT4

GPT4 每月 20 刀&#xff0c;Github Copilot 每月 10 刀 首先叠个甲&#xff1a;免费不是 0 成本。 由于我在日常开发过程中&#xff0c;Copilot 对我来说是必需品&#xff0c;我会用它检查代码、写工具函数、写注释、干苦力。所以这钱是我的必要支出。而这篇文章是介绍如何基…

5 buuctf解题

命令执行 [BJDCTF2020]EasySearch1 打开题目 尝试弱口令&#xff0c;发现没有用 扫描一下后台&#xff0c;最后用御剑扫描到了index.php.swp 访问一下得到源码 源码如下 <?phpob_start();function get_hash(){$chars ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstu…

详解 API 设计最佳实践

应用程序接口&#xff08;API&#xff09;是一种接口&#xff0c;它让应用程序可以轻松地使用另一个应用程序的数据和资源&#xff0c;API 对于一个产品或公司的成功至关重要。 如果没有 API&#xff0c;你大部分喜欢的软件今天就不会存在。例如&#xff0c;Google Maps API 可…

互联网加竞赛 机器视觉opencv答题卡识别系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 答题卡识别系统 - opencv python 图像识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分…

项目实战:Qt监测操作系统物理网卡通断v1.1.0(支持windows、linux、国产麒麟系统)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/136276999 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

爬取链家二手房房价数据存入mongodb并进行分析

实验目的 1.使用python将爬虫数据存入mongodb&#xff1b; 2.使用python读取mongodb数据并进行可视化分析。 实验原理 MongoDB是文档数据库&#xff0c;采用BSON的结构来存储数据。在文档中可嵌套其他文档类型&#xff0c;使得MongoDB具有很强的数据描述能力。本节案例使用的…

第6.4章:StarRocks查询加速——Colocation Join

目录 一、StarRocks数据划分 1.1 分区 1.2 分桶 二、Colocation Join实现原理 2.1 Colocate Join概述 2.2 Colocate Join实现原理 三、应用案例 注&#xff1a;本篇文章阐述的是StarRocks-3.2版本的Colocation Join 官网文章地址&#xff1a; Colocate Join | StarRoc…

【科技素养题】少儿编程 蓝桥杯青少组科技素养题真题及解析第24套

少儿编程 蓝桥杯青少组科技素养题真题及解析第24套 1、A市和B市决定联合建造一个邮件集散中心用于将来自其他地区的邮件运送至两个城市。A 市每周会收到 4000 份邮件,B 市每周会收到 6000 份邮件。假设运送邮件的时间与集散中心距离城市的距离成正比,A市与8市之间的连线长50…