PolarDB-X 1.0-用户指南-分布式事务-基于 MySQL 5.6 的分布式事务

简介: 本文描述的分布式事务适用于MySQL 5.6版本,或版本早于5.3.4的DRDS实例。

本文描述的分布式事务适用于MySQL 5.6版本,或版本早于5.3.4的DRDS实例。

基本原理

关于分布式事务的原理,详情请参见分布式事务基本原理

对于 MySQL 5.6 版本,由于 MySQL XA 协议实现尚不成熟,PolarDB-X自主实现了 2PC 事务策略用于分布式事务。MySQL 5.7 及更高版本中,推荐您使用 XA 事务策略。

如何使用

如果某个事务可能涉及多个数据分库,则需要将当前事务声明为分布式事务。如果事务仅涉及单个数据分库,则无需开启分布式事务,直接像 MySQL 单机事务那样即可,无需额外操作。

分布式事务开启方式如下:

在事务开启后,执行 SET drds_transaction_policy = '...' 即可。

MySQL 命令行客户端使用示例(以2PC事务为例)


  1. SET AUTOCOMMIT=0;
  2. SET drds_transaction_policy ='2PC';--建议MySQL5.6用户使用
  3. ....--业务 SQL
  4. COMMIT;-- ROLLBACK

Java JDBC 代码示例(以 2PC 事务为例)


  1. conn.setAutoCommit(false);
  2. try(Statement stmt = conn.createStatement()){
  3.    stmt.execute("SET drds_transaction_policy = '2PC'");
  4. }
  5. // ... 运行业务 SQL ...
  6. conn.commit();// 或 rollback()

常见问题

如何在 Spring 框架中使用PolarDB-X分布式事务?

如果使用 Spring 的 @Transactional 注解开启事务,可以通过扩展事务管理器来开启PolarDB-X分布式事务。

代码示例:


  1. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  2. import org.springframework.transaction.TransactionDefinition;

  3. import javax.sql.DataSource;
  4. import java.sql.Connection;
  5. import java.sql.SQLException;
  6. import java.sql.Statement;

  7. publicclassDrdsTransactionManagerextendsDataSourceTransactionManager{

  8.    publicDrdsTransactionManager(DataSource dataSource){
  9.        super(dataSource);
  10.    }

  11.    @Override
  12.    protectedvoid prepareTransactionalConnection(Connection con,TransactionDefinition definition)throwsSQLException{
  13.        try(Statement stmt = con.createStatement()){
  14.            stmt.executeUpdate("SET drds_transaction_policy = '2PC'");// 以 2PC 为例
  15.        }
  16.    }
  17. }

之后,在 Spring 配置中将上述类实例化,例如:


  1. id="drdsTransactionManager"class="my.app.DrdsTransactionManager">
  2.     name="dataSource"ref="yourDataSource"/>

对于需要开启PolarDB-X分布式事务的类,加上注解 @Transactional("drdsTransactionManager") 即可。

相关文章
|
12月前
|
关系型数据库 MySQL 分布式数据库
安全可靠的PolarDB V2.0 (兼容MySQL)产品能力及应用场景
PolarDB分布式轻量版采用软件输出方式,能够部署在您的自主环境中。PolarDB分布式轻量版保留并承载了云原生数据库PolarDB分布式版技术团队深厚的内核优化成果,在保持高性能的同时,显著降低成本。
850 141
|
12月前
|
关系型数据库 分布式数据库 数据库
|
12月前
|
存储 关系型数据库 分布式数据库
喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
10月前
|
Cloud Native 关系型数据库 MySQL
免费体验!高效实现自建 MySQL 数据库平滑迁移至 PolarDB-X
PolarDB-X 是阿里云推出的云原生分布式数据库,支持PB级存储扩展、高并发访问与数据强一致,助力企业实现MySQL平滑迁移。现已开放免费体验,点击即享高效、稳定的数据库升级方案。
免费体验!高效实现自建 MySQL 数据库平滑迁移至 PolarDB-X
|
10月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
存储 监控 关系型数据库
突破IO瓶颈:PolarDB分布式并行查询(Parallel Query)深度调优手册
在海量数据处理中,I/O瓶颈严重制约数据库性能。本文基于PolarDB MySQL 8.0.32版本,深入解析分布式并行查询技术如何提升CPU利用率至86.7%、IO吞吐达8.5GB/s,并结合20+实战案例,系统讲解并行架构、执行计划优化、资源调优与故障排查方法,助力实现高性能数据分析。
528 6
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
容灾 关系型数据库 分布式数据库
PolarDB分布式版:与云融合的分布式数据库发展新阶段
PolarDB分布式版标志着分布式数据库与云融合的新阶段。它经历了三个发展阶段:从简单的分布式中间件,到一体化分布式架构,再到云原生分布式数据库。PolarDB充分利用云资源的弹性、高性价比、高可用性和隔离能力,解决了大规模数据扩展性问题,并支持多租户场景和复杂事务处理。零售中台的建设背景包括国家数字化转型战略及解决信息孤岛问题,采用分布式数据库提升高可用性和性能,满足海量订单处理需求。展望未来,零售中台将重点提升容灾能力、优化资源利用并引入AI技术,以实现更智能的服务和更高的业务连续性。
543 9

热门文章

最新文章

相关产品

  • 云原生分布式数据库 PolarDB-X
  • 推荐镜像

    更多