当前位置: 首页 > wzjs >正文

一个外国人做的汉子 网站seo优化视频教程

一个外国人做的汉子 网站,seo优化视频教程,电商设计学什么,郑州定制网站推广工具准备 innodb存储引擎开启支持分布式事务 set global innodb_support_axon分布式的流程 详细流程: XA START ‘a’; 作用:开始一个新的XA事务,并分配一个唯一的事务ID ‘a’。 说明:在这个命令之后,所有后续的SQL操…

准备

innodb存储引擎开启支持分布式事务

set global innodb_support_ax=on

分布式的流程

详细流程:

  1. XA START ‘a’;
    作用:开始一个新的XA事务,并分配一个唯一的事务ID ‘a’。
    说明:在这个命令之后,所有后续的SQL操作都会被包含在这个XA事务中,直到遇到XA END命令。
  2. insert into z(a,b,c) select 100,2,100;
    作用:执行一条插入语句,将值(100, 2, 100)插入到表z中。
    说明:这条语句是在XA事务上下文中执行的,这意味着如果最终XA事务没有成功提交,这个插入操作也不会对数据库产生实际影响。
  3. XA END ‘a’;
    作用:标记XA事务’a’的操作结束。
    说明:这并不意味着事务已经完成或提交,它只是表明当前事务不再接受新的操作。在XA END之后,不能再对该事务进行任何修改操作。
  4. 进行二阶段
    4. 1 XA PREPARE ‘a’;
    作用:准备XA事务’a’,使其进入预备状态。
    说明:这是两阶段提交(2PC, Two-Phase Commit)的第一阶段。在这个阶段,所有参与的资源管理器会投票决定是否可以安全地提交该事务。如果所有参与者都准备好提交,则可以进入下一阶段;如果有任何一个参与者不能准备好,则整个事务会被回滚。
    4.2 XA COMMIT ‘a’;
    作用:提交XA事务’a’。
    说明:这是两阶段提交的第二阶段。只有当所有参与的资源管理器都已准备好(通过XA PREPARE),并且没有 任何错误发生时,才会执行此命令。提交后,所有更改将永久保存到数据库中。

代码实例

引入依赖:

 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version>  <!-- 请使用最新的版本 --></dependency>

1.事务ID标识类

package org.example.xa;import javax.transaction.xa.Xid;public class MyXid implements Xid {private int formatId;private byte gtrid[];private byte bqual[];public MyXid(int formatId, byte gtrid[], byte bqual[]){this.formatId = formatId;this.gtrid = gtrid;this.bqual = bqual;}@Overridepublic int getFormatId() {return formatId;}@Overridepublic byte[] getGlobalTransactionId() {return gtrid;}@Overridepublic byte[] getBranchQualifier() {return bqual;}
}

2.定义获取分布式事务数据源类

package org.example.xa;import com.mysql.cj.jdbc.MysqlXADataSource;public class GetDataSource {private String connString;private String user;private String password;public GetDataSource(String connString, String user, String password) {this.connString = connString;this.user = user;this.password = password;}public MysqlXADataSource getDataSource(){MysqlXADataSource mysqlXADataSource = new MysqlXADataSource();mysqlXADataSource.setURL(connString);mysqlXADataSource.setUser(user);mysqlXADataSource.setPassword(password);return mysqlXADataSource;}
}
  1. XATest测试类
package org.example.xa;import com.mysql.cj.jdbc.MysqlXADataSource;
import javax.sql.XAConnection;
import javax.transaction.xa.XAException;
import javax.transaction.xa.XAResource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;public class XATest {public static void main(String[] args) throws SQLException, XAException {GetDataSource getDataSource1 = new GetDataSource("jdbc:mysql://localhost:3306/test", "root", "123456");MysqlXADataSource dataSource1 = getDataSource1.getDataSource();GetDataSource getDataSource2 = new GetDataSource("jdbc:mysql://localhost:3306/test", "root", "123456");MysqlXADataSource dataSource2 = getDataSource2.getDataSource();//创建分布式事务的资源管理器XAConnection xaConnection1 = dataSource1.getXAConnection();XAResource xaResource1 = xaConnection1.getXAResource();Connection connection1 = xaConnection1.getConnection();Statement statement1 = connection1.createStatement();MyXid myXid1 = new MyXid(100, new byte[]{0x61,0x61,0x61}, new byte[]{0x61,0x61,0x61});//创建分布式事务的资源管理器XAConnection xaConnection2 = dataSource2.getXAConnection();XAResource xaResource2 = xaConnection2.getXAResource();Connection connection2 = xaConnection2.getConnection();Statement statement2 = connection2.createStatement();MyXid myXid2 = new MyXid(100, new byte[]{0x62,0x62,0x62}, new byte[]{0x62,0x62,0x62});//         xaResource2.rollback(new MyXid(100, new byte[]{0x11}, new byte[]{0x12}));//1.开始一个新的XA事务 在这个命令之后,所有后续的SQL操作都会被包含在这个XA事务中,直到遇到XA END命令xaResource1.start(myXid1, XAResource.TMNOFLAGS);//2.执行DMLstatement1.execute("insert into z(`a`,`b`,`c`) select  2800,2,2800");//3.分布式事务的end,这并不意味着事务已经完成或提交,它只是表明当前事务不再接受新的操作。在XA END之后,不能再对该事务进行任何修改操作。xaResource1.end(myXid1, XAResource.TMSUCCESS);xaResource2.start(myXid2, XAResource.TMNOFLAGS);statement2.execute("insert into z(`a`,`b`,`c`) select 2900,2,2900");xaResource2.end(myXid2, XAResource.TMSUCCESS);//1.分布式的二阶段步骤try{//1.1分布式事务的prepare阶段int re1 = xaResource1.prepare(myXid1);int re2 = xaResource2.prepare(myXid2);//1.2分布式事务的commit或者rollback阶段if(XAResource.XA_OK != re1 || XAResource.XA_OK != re2){xaResource1.rollback(myXid1);xaResource2.rollback(myXid2);}xaResource1.commit(myXid1, false);xaResource2.commit(myXid2, false);}catch (Throwable throwable){xaResource1.rollback(myXid1);xaResource2.rollback(myXid2);}}
}
http://www.dtcms.com/wzjs/57650.html

相关文章:

  • dz论坛做视频网站教程搜索引擎优化的具体操作
  • 创建网站多少钱如何推广公众号
  • 吉林长春新冠疫情最新消息seo优化排名经验
  • 武邑县建设局网站网盘搜索神器
  • 个人网站论文设计内容简介活动推广方式
  • 打电话推销好还是做网站推广好百度搜索引擎平台
  • 网络公司给销售公司做网站爱站网官网关键词
  • 昆山住房与城乡建设局网站百度一下百度网站
  • 土巴兔网站开发网络seo优化推广
  • 如何管理wordpressseo关键词优化外包公司
  • 福田大型商城网站建设一键制作单页网站
  • 网站开发用php还pyt h on重庆seo网站系统
  • 高端网站建设怎么报名网络营销工程师前景
  • 广东搜索seo哪家强灵宝seo公司
  • 网站备案后改域名seo快速优化排名
  • 做的网站不能放视频网络营销与管理专业是干什么的
  • 靠谱网站建设公司怎么选百度关键词优化手段
  • 大连旅游攻略上海关键词优化按天计费
  • 广州网站建设加q479185700深圳网络营销怎么推广
  • 新开的公司怎么做网站建一个app平台的费用多少
  • 做网页用的网站河南专业网络推广公司
  • 网站建设公司开票开什么内容济南今日头条最新消息
  • angular2是做网站的还是手机的常用的网络营销策略有哪些
  • 昆山做网站好的短视频seo推广
  • 广西网站推广优化app排名优化
  • 微信公众号微网站建设windows优化大师是系统软件吗
  • 潍坊网站建设兼职百度图片搜索网页版
  • 哪个网站做网店好如何自己做网站
  • 做网站设计方案怎么写网站测速
  • 网站建设设计说明济南seo的排名优化