当前位置:Gxlcms > 数据库问题 > mysql 事务分析小笔记--01

mysql 事务分析小笔记--01

时间:2021-07-01 10:21:17 帮助过:17人阅读

    2.Read Committed  (提交读)                                               --------> read-committed

    3.Repeatable Read  (可重读) mysql 默认级别                         ---------> repeatable-read

    4.Serializable   (串行化)注:事务级别最高,串行执行                  ---------> serializable

  说事务隔离区别前,先简单说一下怎么设置系统事务隔离级别和会话事务隔离级别

    查看InnoDB存储引擎 系统级的隔离级别 和 会话级的隔离级别

     select @@global.tx_isolation,@@tx_isolation;       更改会话和系统隔离级别      set session tx_isolation=‘read-uncommitted‘;//值看上面 “--->”部分      set global tx_isolation=‘read-uncommitted‘;  //值看上面"--->"部分

 

     下面以单词首字母作为简称分析:

    1、RU 未提交读

   容易造成脏数据:

    A 和 B 两个实例作为例子

           A:技术分享

 

           B:技术分享

    认真看看,尼玛,AB开了未提交隔离模式,B就直接读取A中没有添加的插入那行了。造成了严重的脏数据。提交读,可以帮你解决这个问题。

     2、RC (提交读)

   A:技术分享

     B:技术分享

         A插入新行,可是在事务B里查询两次,两次结果不一样,明显出现了不可重复读的情况。前后两次不一致。重复读可以给你解决这个问题。

  3、RR (可重复读)

       A:技术分享

      B: 技术分享

  呵呵,A新增了一行,并且commit,可是在B的事务里,前后两次数据并没有变化。(mysql默认事务隔离级别)

      但是这会有出现一种幻读现象,比如,A事务插了一条,B事务由于查询前后不变,当B去插同一条时候,会报错。

     这个是mysql最常用类型。

  4、Serializable   (串行模式)

      技术分享

      A 事务并没有添加的时候,B根本不能往里面插数据。。。。。。

  这种类型,无论是从效率来说还是从实质来说,应用场景不多。

  (试着类型时候,记得把autocommit 关了,不然没有效果) set autocommit=off

  呵呵,从以上四种事务级别来说不同有不同应用。下次讲讲mvcc的,适合RC RR 。    

 

----------小龙说法,有不同观点有不同见解可以留下意见哈。

 

 

技术分享

mysql 事务分析小笔记--01

标签:off   span   commit   ons   四种   分享   tab   mon   https   

人气教程排行