• MySQL RR隔离 读一致性


    MySQL RR 模式下 事务隔离问题:
    
    Session 1:
    mysql> select * from test;
    +------+------+
    | id   | name |
    +------+------+
    | NULL | a    |
    |    2 | b    |
    |    3 | c    |
    |    1 | a01  |
    |    4 | a    |
    |    4 | a    |
    |    5 | c    |
    +------+------+
    7 rows in set (0.00 sec)
    
    mysql> update test set name='a999' where id=1;
    Query OK, 1 row affected (0.01 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from test;
    +------+------+
    | id   | name |
    +------+------+
    | NULL | a    |
    |    2 | b    |
    |    3 | c    |
    |    1 | a999 |
    |    4 | a    |
    |    4 | a    |
    |    5 | c    |
    +------+------+
    7 rows in set (0.00 sec)
    
    
    Session 2:
    mysql>  select * from test ;
    +------+------+
    | id   | name |
    +------+------+
    | NULL | a    |
    |    2 | b    |
    |    3 | c    |
    |    1 | a01  |
    |    4 | a    |
    |    4 | a    |
    |    5 | c    |
    +------+------+
    7 rows in set (0.00 sec)
    
    mysql>  select * from test ;
    +------+------+
    | id   | name |
    +------+------+
    | NULL | a    |
    |    2 | b    |
    |    3 | c    |
    |    1 | a999 |
    |    4 | a    |
    |    4 | a    |
    |    5 | c    |
    +------+------+
    7 rows in set (0.00 sec)
    
    
    此时没有开启事务,RR模式下 更新立即被看到
    
    
    
    /****************************************************
    
    Session 2开启事务:
    
    
    
    SESSION 1:
    mysql> update test set name='a0101' where id=1;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from test;
    +------+-------+
    | id   | name  |
    +------+-------+
    | NULL | a     |
    |    2 | b     |
    |    3 | c     |
    |    1 | a0101 |
    |    4 | a     |
    |    4 | a     |
    |    5 | c     |
    +------+-------+
    7 rows in set (0.00 sec)
    
    
    此时在查看Session 2:
    
    mysql>  select * from test ;
    +------+------+
    | id   | name |
    +------+------+
    | NULL | a    |
    |    2 | b    |
    |    3 | c    |
    |    1 | a999 |
    |    4 | a    |
    |    4 | a    |
    |    5 | c    |
    +------+------+
    7 rows in set (0.00 sec)
    
    mysql> commit;
    Query OK, 0 rows affected (0.00 sec)  ---需要手动提交事务
    
    mysql>  select * from test ;
    +------+-------+
    | id   | name  |
    +------+-------+
    | NULL | a     |
    |    2 | b     |
    |    3 | c     |
    |    1 | a0101 |
    |    4 | a     |
    |    4 | a     |
    |    5 | c     |
    +------+-------+
    7 rows in set (0.00 sec)

  • 相关阅读:
    JS进阶篇2---函数防抖(debounce)
    vue 的"响应式"是什么意思/ Object.freeze( ) 阻止数据响应
    try{...}catch(){...}语句的使用
    总结一下ES6的promise
    《ES6标准入门》(六)之Promise对象2——then()和catch()方法
    大白话讲解Promise(一)
    解决VSCode单击文件会替换已经打开文件的问题
    通俗理解“回调函数”
    vue中的时间格式处理
    vue之项目踩坑笔记
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350376.html
Copyright © 2020-2023  润新知