tencent cloud

TDSQL MySQL 版

公告
告警升级公告
产品简介
产品概述
产品优势
应用场景
地域和可用区
InnoDB 引擎
购买指南
计费概述(InnoDB)
产品定价(InnoDB)
购买升级
退费说明
欠费说明
备份空间计费
快速入门
InnoDB 引擎
操作指南(InnoDB)
实例管理
灾备/只读实例
修改网络
账号管理
安全管理
慢查询分析
备份与回档
数据迁移
数据库审计
实践教程
从单机实例导入到分布式实例
从分布式实例导入到分布式实例
选择实例配置和分片配置
安全白皮书
平台侧安全设计
租户侧安全功能
开发指南
InnoDB 引擎
API 文档
History
Introduction
API Category
Security Group APIs
Other APIs
Making API Requests
TDSQL APIs
Data Types
Error Codes
常见问题
InnoDB 引擎相关
通用参考
强同步性能对比数据
词汇表
联系我们

分布式事务

PDF
聚焦模式
字号
最后更新时间: 2024-01-06 12:31:07
由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务。 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 上处于活跃状态的事务。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈