首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么MySQL JDBC不使用"Start transaction“查询来启动事务?

MySQL JDBC不使用"Start transaction"查询来启动事务的原因是因为MySQL JDBC驱动程序在执行SQL语句时会自动启动事务。当执行第一个更新语句时,MySQL JDBC驱动程序会自动开始一个事务,并将后续的更新语句都包含在同一个事务中。这样可以确保在执行一系列更新操作时,要么全部成功提交,要么全部回滚。

使用自动启动事务的方式有以下几个优势:

  1. 简化代码:不需要显式地编写"Start transaction"查询来启动事务,减少了代码的复杂性。
  2. 提高性能:自动启动事务可以减少与数据库的通信次数,提高了性能。
  3. 确保数据一致性:自动启动事务可以确保一系列更新操作要么全部成功提交,要么全部回滚,保证了数据的一致性。

MySQL JDBC驱动程序的自动启动事务功能适用于大多数情况下的事务处理。但在某些特殊情况下,可能需要显式地控制事务的开始和结束,这时可以使用"Start transaction"查询来手动启动事务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么MySQL推荐使用查询和join

来源:cnblogs.com/liboware/p/12740901.html 1.对于mysql推荐使用查询和join是因为本身join的效率就是硬伤,一旦数据量很大效率就很难保证,强烈推荐分别根据索引单表取数据...查询id集的时候,使用IN()代替关联查询,可以让MySQL按照ID顺序进行查询,这可能比随机的关联要更高效。 可以减少冗余记录的查询。...三、推荐使用join的原因 1.DB承担的业务压力大,能减少负担就减少。...这种时候是建议跨库join的。目前mysql的分布式中间件,跨库join表现不良。...四、不使用join的解决方案 在业务层,单表查询出数据后,作为条件给下一个单表查询。也就是子查询。会担心子查询出来的结果集太多。mysql对in的数量没有限制,但是mysql限制整条sql语句的大小。

3.8K30

几行烂代码,我赔了16万。

第一种:使用启动事务的语句,这种是显式的启动事务。比如 begin 或 start transaction 语句。与之配套的提交语句是 commit,回滚语句是 rollback。...事务真正启动的时机是什么时候呢? 前面说的 begin/start transaction 命令并不是一个事务的起点,在执行到它们之后的第一个操作 InnoDB 表的语句,事务才算是真正启动。...如果你想要马上启动一个事务,可以使用 start transaction with consistent snapshot 这个命令。...需要注意的是这个命令在读已提交的隔离级别(RC)下是没意义的,和直接使用 start transaction 一个效果。 回到在前面的问题:什么时候才会执行第一个 SQL 语句?...推荐。 还可以使用编程式事务的方式去写,自己去控制事务的开启、提交、回滚。 比直接使用 @Transactional 靠谱。 除此之外,还有一个骚一点的解决方案。

27520

分布式事务事务实现模式与技术(四)

为什么使用JTA?...这时候就会出现问题 多个资源的事务同步方法 XA与最后资源博弈 1.start message transaction 2.receive message 3.start JTA transaction...共享资源 两个数据源共享同一个底层资源 比如ActiveMQ使用DB作为底层资源存储 使用数据库的database transaction Manager事务管理器控制事务提交 需要数据源支持指定底层资源存储方式...= 123456 spring.ds_user.driver-class-name = com.mysql.jdbc.Driver spring.ds_order.url = jdbc:mysql:...使用debug方式模拟运行,第一个order事务提交以后,第二user个事务执行的时候把mysql服务给停掉,出现如下异常 [1m5dts69wa.png] 重启启动msyql服务,程序继续运行,此时来看数据库

1.2K30

mysql 对XA事务的支持

使用XA START启动一个XA事务,并把它置于ACTIVE状态。 2. 对于一个ACTIVE状态的 XA事务,我们可以执行构成事务的SQL语句,然后发布一个XA END语句。...针对一个给定的客户端连接而言,XA事务和非XA事务(即本地事务)是互斥的。例如,已经执行了”XA START”命令开启一个XA事务,则本地事务不会被启动,直到XA事务已经被提交或被 回滚为止。...相反的,如果已经使用START TRANSACTION启动一个本地事务,则XA语句不能被使用,直到该事务被提交或被 回滚为止。...be executed when global transaction is in the ACTIVE state 3 关于XID的说明 mysql使用xid来作为一个事务分支的标识符。...在前面直接使用mysql命令操作的时候,我们通过"XA START xid”等XA命令执行XA事务

3.1K21

阿里3面:Spring声明式事务连环炮,让我措手不及。。

,拦截器会拦截bean中public方法执行,会在方法执行之前启动事务,方法执行完毕之后提交或者回滚事务。...,有这些管理者管理具体的事务,比如启动事务、提交事务、回滚事务,这些都是管理者负责的。...spring中使用PlatformTransactionManager这个接口表示事务管理者。 PlatformTransactionManager多个实现类,用来应对不同的环境 ?...是否是只读事务,比如某个方法中只有查询操作,我们可以指定事务是只读的 设置了这个参数,可能数据库会做一些性能优化,提升查询速度 rollbackFor 定义零(0)个或更多异常类,这些异常类必须是Throwable...insertBatch方法上@Transaction注解参数都是默认值,@Transaction注解中可以通过value或者transactionManager指定事务管理器,但是没有指定,此时spring

81520

MySQL中基于XA实现的分布式事务

现如今实现基于两阶段提交的分布式事务也没那么困难了,如果使用java,那么可以使用开源软件atomikos(http://www.atomikos.com/)或者TCC开源的框架快速实现。...不过但凡使用过的上述两阶段提交的同学都可以发现性能实在是太差,根本不适合高并发的系统。为什么? 两阶段提交涉及多次节点间的网络通信,通信时间太长!...比如使用消息队列避免分布式事务。...三、MySQL分布式事务限制 1、XA事务和本地事务以及锁表操作是互斥的 开启了xa事务就无法使用本地事务和锁表操作 root@localhost [3306][wjq]>xa start 'xatest...产生上述问题的主要原因在于: MySQL 5.6版本在客户端退出的时候,自动把已经prepare的事务回滚了,那么MySQL为什么要这样做?

57410

MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)

开始一个事务 start transactionMySQL中,事务开始使用COMMIT或ROLLBACK语句开始工作和结束。开始和结束语句的SQL命令之间形成了大量的事务。...Java中setAutoCommit(false)对应mysql中的“START TRANSACTION;”的功能 SQL代码演示说明: start transaction; delete from aa..."); //2、建立连接 String url = "jdbc:mysql://127.0.0.1:3306/hncu?...level read committed; 2、B执行start transaction,修改一条记录,查询记录,记录已经修改成功 3、A查询记录,结果还是老的记录 4、B提交事务 5、A再次查询记录...测试流程: 1、A设置repeatable-read, start transaction查询记录,结果是老的记录 设置事务隔离级别(repeatable-read,MySQL默认): set session

40410

隔离级别引发问题实验

继续上篇博客 事务特性及隔离问题。 我们做一个关于隔离级别的实验,将演示各个级别导致的隔离问题。 我们先打开两个MySQL窗口,模拟并发操作。...在A、B窗口分别开启一个事务,输入start transaction;现在同时查看两个用户的表数据 ?...那这是为什么呢?因为该级别是最高隔离级别,采取串行处理方法,在一个用户操作该数据库时,不允许别的用户操作。 那么接下来请注意了,在JDBC程序中如何控制数据库的隔离级别呢?...如果设置隔离级别,将采用数据库默认级别,Oracle和MySQL数据库的默认级别是什么还记得吗?不记得的话就再次阅读一下我的上一篇博客。...还有一个需要注意的地方,在MySQL5.5的64位版本中,输入set transaction isolation level代码并不能成功修改事务隔离级别,这又是为什么呢?

33620

MySQL基础之事务编程学习笔记

mysql默认事务是自动提交的,不过是可以通过命令进行关闭,也可以使用事务控制语句开启一个事务,所以,归纳一下,方法有二 ## 方法1:通过set autocommit = 0关闭事务自动提交 # 查询是否开启事务自动提交...命令 # 开启一个事务使用这个命令之后,事务使用commit或者commit work命令才会提交 BEGIN; # START TRANSACTION命令和Begin命令效果一样 START TRANSACTION...0,它还有1和2两种值,不过在新版mysql5.7测试,发现值为2的情况起效 SET @@completion_type = 1;# commit+chain(链事务,提示事务之后还会start transaction...,这种情况是不允许的,所以就要保证事务一致性 在数据库层面可以使用mysql的XA事务,xa事务可以支持多种数据库,xa事务由一个或多个资源管理器(resource manager)、一个事务管理器(transaction...} @Override public byte[] getBranchQualifier() { return bqual; } } import com.mysql.jdbc.jdbc2

45110

JavaWeb14-事务,连接池(Java正在的全栈开发)

,相当于第一条SQL执行前执行了 start transaction mysql中手动事务处理 start transaction:-- 开启事务 一旦手动开启了事务,事务自动提交失效. commit;...flag); 参数为false相当于start transaction commit(); 事务提交 rollback(); 事务回滚 回滚(Rollback)指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为...(注意,不能使用 Connection.TRANSACTION_NONE,因为它指定了不受支持的事务。) 6....使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身管理。...同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制监视数据库连接的数量、使用情况等。

84240

由for update引发的血案

得到测试结果,发现如果有 2 个或以上 ID 不同的 connection 对象执行 sql,会发生阻塞,而 Mysql 不会发生阻塞,至于 Mysql 为什么不会发生阻塞,后面我再给大家解释。...Mybatis 事务管理器 有没有发现,我到现在也是一直在强调 Spring 事务,其实在数据库的角度来说,sql 只要在 START TRANSACTION 与 COMMIT 或者 ROLLBACK...事务管理器,Mybatis 用它管理 JDBC connection 的生命周期,别看它名字是以 Spring 开头,但它和 Spring 的事务管理器没有半毛钱关系。...这里就要从数据库层解释了,由于公司 Oracle 数据库的 autocommit 使用的是默认的 false 值,即需要显式提交 commit 事务才会被提交。...而为什么当 druid 的 autoCommit=true 时,Mysql 依然不会阻塞呢?我先开启 Mysql 的日志打印: set global general_log = 1; ?

91850

由for update引发的血案

得到测试结果,发现如果有 2 个或以上 ID 不同的 connection 对象执行 sql,会发生阻塞,而 Mysql 不会发生阻塞,至于 Mysql 为什么不会发生阻塞,后面我再给大家解释。...Mybatis 事务管理器 有没有发现,我到现在也是一直在强调 Spring 事务,其实在数据库的角度来说,sql 只要在 START TRANSACTION 与 COMMIT 或者 ROLLBACK...事务管理器,Mybatis 用它管理 JDBC connection 的生命周期,别看它名字是以 Spring 开头,但它和 Spring 的事务管理器没有半毛钱关系。...这里就要从数据库层解释了,由于公司 Oracle 数据库的 autocommit 使用的是默认的 false 值,即需要显式提交 commit 事务才会被提交。...而为什么当 druid 的 autoCommit=true 时,Mysql 依然不会阻塞呢?我先开启 Mysql 的日志打印: set global general_log = 1; ?

94120

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券