由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务。

TDSQL MySQL版 支持普通分布式事务协议和 XA 分布式事务协议。TDSQL MySQL版(内核5.7或以上版本)默认支持分布式事务,且对客户端透明,像使用单机事务一样方便。

TDSQL MySQL版 分布式事务采用两阶段提交算法(2PC)保证事务的原子性(Atomicity)和一致性(Consistency),隔离级别配置为 Read committed、Repeatable read 或 Serializable。

普通分布式事务

begin; # 开启事务

... # 跨 set 的增删改查等非 DDL 操作

commit; # 提交事务

XA 分布式事务

XA 分布式事务是指跨实例的事务:

xa begin ''; # 开启 XA 事务,事务标识由系统内部生成,因此传入空字符串

... # 跨 set 的增删改查等非 DDL 操作

select gtid(); # 获取当前 XA 事务的标识,下面假定为'xid'

xa prepare 'xid'; # 准备事务

xa commit/rollback 'xid'; # 提交或回滚事务

新增事务接口

select gtid() :获取当前分布式事务的全局唯一标识。如果为空,则该事务不是分布式事务。

普通分布式事务标识的格式为:‘网关id’-‘proxy随机值’-‘序列号’-‘时间戳’-‘分区号’,例如 c46535fe-b6-dd-595db6b8-25。

XA 分布式事务标识的格式为:‘ex’-‘网关id’-‘proxy随机值’-‘序列号’-‘时间戳’-‘分区号’,例如 ex-c46535fe-b6-dd-595db6b8-25。

select gtid_state(“当前分布式事务的全局唯一标识”):在事务提交异常之后(默认3秒后)用来获取事务的状态。可能的结果有:

COMMIT:标识该事务已经或者最终会被提交。

ABORT:标识该事务最终会被回滚。

空:由于事务的状态会在一个小时之后清除,因此有以下两种可能:

一个小时之后查询,标识事务状态已经清除,

一个小时以内查询,标识事务最终会被回滚。

xa boost ‘当前分布式事务的全局唯一标识’:普通事务提交(commit)发送异常之后,事务在一段时间内(默认30秒)由后台组件自动提交或者回滚掉。如果用户不愿意等待这么长的时间,可以反复调用该接口,促使系统及时地提交或回滚掉事务。该接口会返回事务的状态,即提交或者回滚。

xa lockwait:显示当前分布式事务的等待关系。用户可以通过 dot 工具,将其转化为图片。

xa show:显示当前 proxy 上处于活跃状态的事务。

腾讯云TDSQL MySQL版 - 开发指南 分布式事务的更多相关文章

  1. 腾讯云TDSQL MySQL版 - 开发指南 二级分区

    TDSQL MySQL版 目前支持 Range 和 List 两种格式的二级分区,具体建表语法和 MySQL 分区语法类似. 二级分区语法 一级 Hash,二级 List 分区示例如下: MySQL ...

  2. 腾讯云TDSQL PostgreSQL版 -最佳实践 |优化 SQL 语句

    查看是否为分布键查询 postgres=# explain select * from tbase_1 where f1=1; QUERY PLAN ------------------------- ...

  3. 286万QPS!腾讯云TDSQL打造数据库领域的“超音速战机”

    Bloodhound SSC超音速汽车将陆地极限速度提升到1678公里/小时,号称陆地“超音速战斗机”.无独有偶,同样也在2017年,在英特尔®.腾讯金融云团队的共同见证下,腾讯云数据库TDSQL采用 ...

  4. 腾讯云TDSQL监控库密码忘记问题解决实战

    首先,给大家介绍一下TDSQL.TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用.全球部署架构.分布式水平扩展.高性能.企业级安全等特性, ...

  5. TDSQL MySQL版基本原理-水平分表 读写分离 弹性扩展 强同步

    TDSQL MySQL版(TDSQL for MySQL)是部署在腾讯云上的一种支持自动水平拆分.Shared Nothing 架构的分布式数据库.TDSQL MySQL版 即业务获取的是完整的逻辑库 ...

  6. 腾讯云TDSQL审计原理揭秘

    版权声明:本文由孙勇福原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/244 来源:腾云阁 https://www.qclo ...

  7. 阿里云数据库MySQL版快速上手!

    MySQL是全球最受欢迎的开源数据库,其在各Web应用中均有广泛部署.阿里云数据库MySQL版基于Alibaba的MySQL源码分支,经过双11高并发.大数据量的考验,拥有优良的性能和吞吐量.除此之外 ...

  8. Navicat连接腾讯云实例MySQL

    Navicat连接腾讯云实例MySQL 授权所有的用户通过root账户 root密码登陆远程数据库 连接腾讯云实例上的MySQL数据库 这里的密码填入数据库的密码 这里的密码填入登陆云实例的密码也就是 ...

  9. ReadHub项目Kotlin版开发指南(三、MVP架构)

    ReadHub项目Kotlin版转换指南(一.环境搭建) ReadHub项目Kotlin版转换指南(二.数据库和网络请求) ReadHub项目Kotlin版转换指南(三.MVP架构) Android ...

随机推荐

  1. python远程备份mysql并压缩

    import osimport timeimport tarfileimport zipfile'''mysqldumpUsage: mysqldump [OPTIONS] database [tab ...

  2. C语言:sizeof判断数据类型长度

    #include <stdio.h> int main() { short a = 10; int b = 100; long c=100; int short_length = size ...

  3. python 得到汉字的拼音

    import pypinyin # 不带声调的(style=pypinyin.NORMAL) def pinyin(word): s = '' for i in pypinyin.pinyin(wor ...

  4. Wordcloud(词云)安装使用以及vscode搭建虚拟环境

    (电脑烧掉了主板,地方上的所有门店全部关闭了,幸好现在京东还通物流,总算是进行把电脑拿回来了.对于一些东西无法实际操作真的是很难受,言归正传,说一下Wordcloud) Wordcloud安装(全局安 ...

  5. Java基础00-第一个程序2

    1. 常用DOS命令 1.1 打开命令提示窗口 按下win+R 输入cmd 按下回车键 得到命令提示窗口 1.2 常用命令 2. Path环境变量的配置 2.1 为什么要配置Path环境变量 2.2 ...

  6. 微信小程序云开发-数据库-列表页携带id跳转到详情页

    一.新建页面 新建列表页"pages/goodslist/goodslist",新建列表详情页"pages/gooddetail/gooddetail"  二. ...

  7. 纯C语言(C89)实现简单链表

    起因 工作很少接触纯C项目,业余写着玩玩,不断雕琢 目标 纯C实现简单链表,提供方便易用泛型接口,避免依赖 实现 完全封装,隐藏结构体细节,不支持栈创建 拷贝存储,轻微性能代价换来易用性 list.h ...

  8. (python函数01)enumerate函数

    enumerate函数 enumerate函数示例代码01运行结果01示例代码02运行结果02 enumerate(枚举,列举)是python的内置函数,enumerate的参数为可迭代对象,如字符串 ...

  9. intouch与PLC之间通讯状态监测和设置

    intouch与PLC进行通讯状态监测中,一般做法需要PLC来实施主动脉冲计数,或者bool变化来实现.本文通过上位机自带参数设置,实现对intouch通讯状态监视,将画面恢复初始状态,并及时弹窗报警 ...

  10. Greenplum 6安装指南(CentOS 7.X)

    一.基本概念 Greenplum是一个面向数据仓库应用的关系型数据库,因为有良好的体系结构,所以 在数据存储.高并发.高可用.线性扩展.反应速度.易用性和性价比等方面有非常 明显的优势.Greenpl ...