暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql事务

极南之地 2021-04-26
212

事务

在 MySQL 中,事务其实是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性。

在实际项目中,假设只有一条 SQL 语句执行成功,而另外一条执行失败了,就会出现数据前后不一致。

因此,在执行多条有关联 SQL 语句时,事务可能会要求这些 SQL 语句要么同时执行成功,要么就都执行失败。

在 MySQL 中,事务的自动提交状态默认是开启的。

查询事务的自动提交状态

    SELECT @@AUTOCOMMIT


    @@AUTOCOMMIT

    1

    自动提交的作用:当我们执行一条 SQL 语句的时候,其产生的效果就会立即体现出来,且不能回滚。


    关闭自动提交 

      SET AUTOCOMMIT = 0;


      @@AUTOCOMMIT
      0

      当事务自动提交被关闭后,便可以手动控制事务,在提交事务后便不能回滚事务

      提交事务COMMIT 
      回滚事务ROLLBACK

      事务的ACID

      原子性:   事务是最小的单位,不可以再分割;如果有多个事务,那么任意事务都可以看见其他事务的未提交数据。

      C 一致性:  要求同一事务中的 SQL 语句,必须保证同时成功或者失败;只能读取到其他事务已经提交的数据。

      I  隔离性  事务a 和 事务b 之间是具有隔离性的;如果有多个连接都开启了事务,那么事务之间不能共享数据记录,否则只能共享已提交的记录。

      D 持久性: 事务一旦结束 ( COMMIT ) ,就不可以再返回了 ( ROLLBACK ) 所有的事务都会按照固定顺序执行,执行完一个事务后再继续执行下一个事务的写入操作。

      查询隔离级别:

        SELECT @@GLOBAL.TRANSACTION_ISOLATION
        @@GLOBAL.TRANSACTION_ISOLATION
        REPEATABLE-READ  (默认级别)


        隔离级别越高,性能越差

        READ-UNCOMMITTED (脏读问题)>

        READ- COMMITTED (不可重复读问题)>

        REPEATABLE- -READ (幻读问题)>

        SERIALIZABLE(串行化问题)



        文章转载自极南之地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论