美文网首页
mysql事务自动提交的问题

mysql事务自动提交的问题

作者: 旋转马达 | 来源:发表于2019-04-28 22:40 被阅读0次

1:mysql的aut0commit配置默认是开启的,也就是没执行一条sql都会提交一次,就算显示的开启事务也会导致多条SQL不在一个事务中,
如果需要相关的SQL在同一个事务中执行,那么必须将autocommit设置为OFF,再显式开启事务。
2:如果使用spring的事务,那么不存在这个问题,spring的事务默认是关闭自动提交的,做法是判断连接池是否开启事务自动提交,如果连接池开启自动提交则设置自动提交为关闭,否则不做操作,因为某些jdbc驱动做设置自动提交关闭代价昂贵。

/**
     * This implementation sets the isolation level but ignores the timeout.
     */
    @Override
    protected void doBegin(Object transaction, TransactionDefinition definition) {
              .........省略某些代码
            // Switch to manual commit if necessary. This is very expensive in some JDBC drivers,
            // so we don't want to do it unnecessarily (for example if we've explicitly
            // configured the connection pool to set it already).
            if (con.getAutoCommit()) {
                txObject.setMustRestoreAutoCommit(true);
                if (logger.isDebugEnabled()) {
                    logger.debug("Switching JDBC Connection [" + con + "] to manual commit");
                }
                con.setAutoCommit(false);
            }
    }

相关文章

  • MySQL事务处理二

    SELECT @@AUTOCOMMIT; 查看MySQL是否自动提交事务 0表示手动提交事务 1表示自动提交事...

  • Mysql事务控制语句

    介绍 Mysql的Innodb存储引擎默认事务都是自动提交(隐式提交);查看当前的事务是否自动提交: 事务操作 开...

  • mysql事务自动提交的问题

    1:mysql的aut0commit配置默认是开启的,也就是没执行一条sql都会提交一次,就算显示的开启事务也会导...

  • mysql和oracle的区别

    对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令...

  • Mysql和Oracle

    (1) 对事务的提交MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit...

  • MySql 和 Oracle 数据库的区别是什么

    (1) 对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写comm...

  • mysql数据库锁

    mysql开启事务的三种方式(查看事务是否自动提交)show variables LIKE 'autocommit...

  • SQL优化技巧

    一、插入优化 1.1 手动提交事务 由于mysql默认事务提交方式是自动提交的,意味着当我们执行完一条insert...

  • mysql进行事务实验

    MySQL默认采用自动提交(AUTOCOMMIT)模式,不是显示的开启一个事务,每个查询都被当作一个事务执行提交操...

  • mysql事务select for update及数据的一致性处

    MySQL中的事务,默认是自动提交的,即autocommit = 1; 但是这样的话,在某些情形中就会出现问题:比...

网友评论

      本文标题:mysql事务自动提交的问题

      本文链接:https://www.haomeiwen.com/subject/fgusnqtx.html