全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
全局事务服务 GTS

配置 GTS 接入

更新时间:2017-07-20 14:28:44

在申请分布式事务成功后,就可以配置 GTS 接入了。

配置 GTS 接入分为两种情况:

  • 单个 DRDS 实例的 GTS 接入
  • 多个 DRDS 实例的 GTS 接入

单个 DRDS 实例的 GTS 接入

单个 DRDS 实例的 GTS 接入,需要在开始分布式事务的地方加上 select last_txc_xid() 语句,之后的使用方式和传统单机数据库事务完全一致。

您既可以采用手工处理事务的提交和回滚,也可以将管理交给 Spring 事务管理器来管理。

  • 手工处理事务的典型 SQL 语句步骤如下:

    1. set autocommit=false //开启事务
    2. select last_txc_xid() //注册一个 GTS 事务
    3. insert/update/delete 等业务 SQL
    4. commit 或者 rollback //全局提交或回滚
    5. set autocommit=true //恢复自动提交
  • Spring 事务管理器来处理事务的典型代码如下:

    1. @Transactional
    2. public void update(JdbcTemplate jdbcTemplate) {
    3. //开启一个 GTS 分布式事务
    4. jdbcTemplate.execute("select last_txc_xid()");
    5. // insert/update/delete 等业务 SQL
    6. }

多个 DRDS 实例的 GTS 接入

多个 DRDS 实例的 GTS 接入需要在第一个 DRDS 实例中加上 select last_txc_xid() 语句,再将其他 DRDS 实例和第一个实例的 txc-xid 进行关联。

下面以两个 DRDS 实例(datasource1 和 datasource2)的 GTS 接入举例说明,多个实例的接入方法类似。

  1. 在 datasource1 上执行 select last_txc_xid (), 接入 GTS,并得到 xid。

  2. 在 datasource2 上执行 set txc_xid=xid,其中 xid 为1中获取的 xid。

以上两步就可以把 dataource1、datasource2 放到一个分布式事务里了。

上述 GTS 配置之后,DRDS 的多个分库中的数据会保持强一致,根据您业务代码的配置,要么同时提交,要么同时回滚。

本文导读目录