XA 事务

InnoDB 存储引擎支持 XA 事务。MySQL XA 的实现基于 X/Open CAE 文档 Distributed Transaction Processing: The XA Specification。文件网址为 http://www.opengroup.org/public/pubs/catalog/c193.htm。

在客户端,没有特殊要求。MySQL 服务器的 XA 接口由以 XA 关键字开头的 SQL 语句组成。MySQL 客户端程序必须能够发送 SQL 语句并理解 XA 语句接口的语义。它们不需要与最新的客户端库链接。旧的客户端库也可以使用。

在 MySQL 连接器中,MySQL Connector/J 5.0.0 及更高版本,通过处理 XA SQL 语句接口的类接口直接支持 XA。

XA 支持分布式事务,即允许多个独立事务资源参与全局事务的能力。事务性资源通常是 RDBMS,但也可能是其他类型的资源。

全局事务涉及多个本身是事务性的操作,但所有这些操作要么作为一组成功完成,要么作为一组回滚。本质上,这将 ACID 属性扩展到“上一个级别”,以便可以将多个 ACID 事务作为同样具有 ACID 属性的全局操作的组件一起执行。(与非分布式事务一样,如果应用程序侧重读取,则 SERIALIZABLE 可能是首选。对于分布式事务,REPEATABLE READ 可能效率不足。)

一些分布式事务的示例:

● 应用程序可以作为集成工具,将消息传递服务与 RDBMS 结合在一起。应用程序确保处理消息发送、检索和涉及到事务数据库的处理,这些事务都发生在全局事务中。你可以把它想象成“事务性电子邮件”。

● 应用程序执行的操作涉及不同的数据库服务器,例如 MySQL 服务器和 Oracle 服务器(或多个 MySQL 服务器),其中涉及多个服务器的操作必须作为全局事务的一部分发生,而不是作为每个服务器本地的单独事务。

● 银行将帐户信息保存在关系数据库中,并通过自动柜员机(ATM)分发和接收资金。必须确保 ATM 操作正确地反映在帐户中,但这不能仅用 RDBMS 来实现。全局事务管理器整合 ATM 和数据库资源,以确保金融交易的整体一致性。

使用全局事务的应用程序包含一个或多个资源管理器和一个事务管理器:

● 资源管理器(RM)提供对事务性资源的访问。数据库服务器是一种资源管理器。必须能够提交或回滚由RM管理的事务。

● 事务管理器(TM)协调全局事务的一部分事务。它与处理事务的 RM 通信。全局事务中的单个事务是全局事务的“分支”。全局事务及其分支由后面描述的命名方案标识。

XA 的 MySQL 实现使 MySQL 服务器能够充当资源管理器,在全局事务中处理 XA 事务。连接到 MySQL 服务器的客户端程序充当事务管理器。

要执行全局事务,必须知道涉及哪些组件,并将每个组件置于可以提交或回滚的位置。基于每个组件报告的结果,它们必须作为一个原子组提交或回滚。也就是说,要么所有组件都必须提交,要么所有组件都必须回滚。要管理全局事务,必须考虑到任何组件或连接网络可能发生故障。

执行全局事务的流程使用两阶段提交(2PC)。这在全局事务的分支执行操作之后发生。

● 在第一阶段,所有分支都准备就绪。也就是说,他们被 TM 告知要准备提交。通常,这意味着管理分支的每个 RM 在稳定存储中记录该分支的操作。分支表明它们是否能够做到这一点,这些结果将用于第二阶段。

● 在第二阶段,TM 告诉 RM 是提交还是回滚。如果所有分支都表示它们准备就绪时能够提交,则所有分支都被告知提交。如果任何分支在准备时表示无法提交,则所有分支都被告知回滚。

在某些情况下,全局事务可能使用单阶段提交(1PC)。例如,当事务管理器发现全局事务只包含一个事务资源(即单个分支)时,可以告知该资源同时准备和提交。

原文:https://blog.51cto.com/15023289/2559529

mysql事务控制(xa分布式事务)和锁定语句_MySQL的SQL语句 -事务性语句和锁定语句(7)- XA 事务...相关推荐

  1. mysql 查询语句_MySQL相关(一)- 一条查询语句是如何执行的

    前言 学习一个新知识最好的方式就是上官网,所以我先把官网贴出来 MySQL官网 (点击查阅),如果大家有想了解我没有说到的东西可以直接上官网看哈~目前 MySQL 最新大版本为8.0,但是鉴于目前应用 ...

  2. mysql里条件语句和循环语句_MySQL与Oracle 差异比较之四条件循环语句

    循环语句 编号 类别 oracle Mysql 注释 1 IF语句使用不同 IFiv_weekly_day = 'MON'THEN ii_weekly_day := 'MON'; ELSIFiv_we ...

  3. mysql查询子表的语句_MySQL基本SQL语句之单表查询、多表查询和子查询

    一.简单查询: 1.基本语法: SELECT * FROM tb_name;//查询全部 SELECT field1,field2 FROM tb_name; //投影 SELECT [DISTINC ...

  4. 建立学生选课表 mysql 语句_MySQL常用SQL语句(Python实现学生、课程、选课表增删改查)...

    以基本的学生选课为例,建立选课数据库,学生.班级.选课信息三张表,并分别对表进行插删改操作: import MySQLdb try: conn = MySQLdb.connect(host = 'lo ...

  5. mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)

    子查询的限制 ● 通常,不能在子查询中修改表并从同一表中进行选择.例如,此限制适用于以下形式的语法: 1. DELETE FROM t WHERE ... (SELECT ... FROM t ... ...

  6. mysql排序显示行数的语句_MySQL中sql语句count(*),orderby,随机数据展示。

    count(*)这么慢,我该怎么办? MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高: 而 InnoDB 引擎就麻烦了,它执行 count ...

  7. mysql查看数据库表大小语句_MySQL查看数据库表容量大小的命令语句讲解

    MySQL查看数据库表容量大小的命令语句讲解 发布时间:2020-04-27 14:17:23 来源:亿速云 阅读:180 作者:三月 本文主要给大家介绍MySQL查看数据库表容量大小的命令语句讲解, ...

  8. MySQL倒序查询最后三条语句_MySQL 中 一条 order by index limit 语句的分析

    在开发过程中,遇到了一条 order by index limit 的语句,执行时间慢,下面记录一下分析过程和原因 问题 SQL select * from t1 where call_type = ...

  9. MySQL中定义fk语句_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (4)

    外键和其他约束 InnoDB和NDB存储引擎支持 FOREIGN KEY 和 REFERENCES 子句,这些存储引擎实现了ADD [CONSTRAINT [symbol]] FOREIGN KEY ...

最新文章

  1. 电脑退出全屏按哪个键_电脑键盘上的F1到F12,每一个都是快捷键大家都会用到...
  2. boost::mp11::mp_third相关用法的测试程序
  3. 【汇总推荐】深度学习、自然语言处理干货笔记汇总
  4. 开源软件 Apache Dubbo 牵手 IDE 插件,开发部署提速不止 8 倍
  5. 两点间最短路 java_AcWing 850. Dijkstra求最短路 II_Java实现含详细注释
  6. jq点击事件多次响应_Jquery中on绑定事件 点击一次 执行多次 的解决办法
  7. java transient 应用场景_关于java:transient关键字的用途是什么以及何时使用它?...
  8. [USACO07FEB]银牛派对Silver Cow Party
  9. 原始套接字AF_PACKET用法尝试
  10. Java中static的用法,初始化块
  11. 2020年20种最佳Android应用程序模板
  12. docker搭建aria2离线下载,rclone自动上传
  13. PPT视频教程哪里下载?
  14. java制作纯字rpg小游戏_初学JAVA时编写的rpg文字游戏
  15. 移动通信核心网技术总结(一)语音与上网业务的实现
  16. MSSQL2008 性能优化
  17. JavaScript头像上传器的实现
  18. SwiftUI学习(一)
  19. RTK如何进行面积测量,跟攻略学就对了
  20. php只取时间的下士_闲来无聊,用python抓取天气信息,简单就是美啊

热门文章

  1. i java 字节码_用java字节码解释i++和++i
  2. 怎么查找电脑中的流氓软件_玻璃丝网印刷过程中油墨出现问题怎么查找原因解决问题?...
  3. Java学习资源、视频教程汇总
  4. 基于layui的select区域联动
  5. 我们自己搞了个数据库设计工具(客户端)
  6. 201803-1-跳一跳
  7. 魅族技术晚场回顾,算法、架构、AI之外,还要考虑未来
  8. 完工后的决算书范本_工程决算书范本
  9. Linux使用Mac键盘,System76 推出 Linux 键盘 看完手痒了!
  10. php判断是否存在http,php获取http-header来判断文件是否存在