zoukankan      html  css  js  c++  java
  • 解释和演示一下何为“事务的不可重复读”/“幻影读”

    不可重复读(幻影现象)可重复读

      MySQL默认情况下是可重复读,解决了幻影问题

        mysql> show variables like ‘%tx%’;

        +-----------------------+--------------------------+

        | Variables_name |  Value          |

        +------------------------+--------------------------+

        | tx_isolation     |REPEATABLE-READ |

        | tx_read_only    | OFF            |

        +------------------------+---------------------------+

      改成 read-committed(已提交读)后,出现幻影读

        mysql> set @@session.tx_isolation = 'READ-COMMITTED';

        Query OK, 0 rows affected (0.00 sec)

    演示幻影读:

      A:设置隔离级别为已提交读:

        mysql> set @@session.tx_isolation = 'READ-COMMITTED';

        Query OK, 0 rows affected (0.00 sec)

      对这4行数据加了锁:对表加is锁,对4行加x行锁,事务没有提交

        mysql> select * from t2 where name=abcfor uodate;

        +------+---------+

        |id  | name |

        +------+---------+

        |1  | ABC |

        |3  |abc |

        |8  |ABC |

        |10 |abc |

        +------+---------+

        4 rows in set (0.01 sec)

      B:设置隔离级别为已提交读:

        mysql> set @@session.tx_isolation = 'READ-COMMITTED';

        Query OK, 0 rows affected (0.00 sec)

      对t2表插入 name abc 的数据,成功了:

        mysql> insert into t2(name) values(‘abc’);

      A:再去执行,发现成了5nameabc的数据:

        mysql> select * from t2 where name=abcfor uodate;

        +------+---------+

        |id  | name |

        +------+---------+

        |1  | ABC  |

        |3  |abc   |

        |8  |ABC  |

        |10 |abc   |

        |16| abc   |

        +------+---------+

        4 rows in set (0.01 sec)

      一会4行,一会5行,如果把这个参数设置成已提交读,就出现了幻影现象。

  • 相关阅读:
    MVC 下 JsonResult 的使用方法(JsonRequestBehavior.AllowGet)<转>
    MVC Razor模板引擎 @RenderBody、@RenderPage、@RenderSection及Html.RenderPartial、Html.RenderAction
    ASP.NET MVC路径引用总结
    XHTML 相对路径与绝对路径
    MVC中处理Json和JS中处理Json对象
    ASP.NET MVC中为DropDownListFor设置选中项的方法
    List转MVC DropDownListFor(SelectList)
    C# MVC 枚举转 SelectListItem
    MVC为Html对象建立一个扩展方法,使用自己的控件就像使用TextBox一样方便
    Java语言的主要特点
  • 原文地址:https://www.cnblogs.com/5945yang/p/11346468.html
Copyright © 2011-2022 走看看