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行,如果把这个参数设置成已提交读,就出现了幻影现象。

  • 相关阅读:
    shell笔记
    全引用与部分引用
    R语言 EFA(探索性因子分析)
    Markdown 基本使用
    Oracle截取字符串和查找字符串
    ggplot画基本图形类型
    ggplot画图笔记
    用R语言 画条形图(基于ggplot2包)
    Git基本操作
    R语言为数据框添加列名或行名
  • 原文地址:https://www.cnblogs.com/5945yang/p/11346468.html
Copyright © 2011-2022 走看看