浅MySQL中谈的事务隔离级别r11笔(记第86天)

  

  ,,之前写了一篇浅谈事务(一),算是对事务的一个基本认识,今天来简单总结一下事务的隔离级别,虽然是老掉牙的知识点,重温一下还是值得的。   

  

  ,,在MySQL中基本有这两种事务隔离级别的设置,默认的RR(可重复读)和实际中常见的RC(授权读取)。两者区别是什么,怎么正确理解,用几个SQL语句就能说明白,就用简单的实验来说明白。   

  

  ,,我们开始吧只,,,   

  

  ,,首先创建一个测试表测试,插入一些数据。   

  

  创建表的测试(int id主键名称varchar(30),备忘录varchar (30));
  插入测试值(“name1”,“aaaa”), (2)“name2”,“aaaa”), (3“name3”“aaaa”), (4“name4”“aaaa”), (5“name5”“aaaa”),,,,很多情况下,我们会把隔离级别从默认的RR修改为钢筋混凝土,这也是其它很多数据库默认的事务隔离级别。   

  

  我们打开两个窗口,来对比关联测试。   

  RC模式下的测试   

  1   

     

  
  

  

  窗口1   

     

  在显示变量如“tx_isolation”;,,
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | Variable_name | Value ,,,,,,,,|
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | tx_isolation |读取提交|
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  1行集(0.01秒)   

  

  在开始,,——开启事务
  在select *从测试,,——查看数据
  + - - - - - - - - - - - - - - - - - - + +
  | | id name 备忘录| |
  + - - - - - - - - - - - - - - - - - - + +
  |,1 | name1 | aaaa |
  |,2 | name2 | aaaa |
  |,3 | name3 | aaaa |
  |,4 | name4 | aaaa |
  |,5 | name5 | aaaa |
  + - - - - - - - - - - - - - - - - - - + +
  5行集(0.00秒)   

     

  2   

     

  窗口2   

     

  开始,,——开启事务
  在更新测试集名称=拔逍羌丁眎d=2;,——修改一条记录
  查询好了,1行影响(0.06秒)
  行匹配:1,改变:1,警告:0
  在提交,,——提交事务
  查询好,0行影响(0.01秒)   

     

  1   

     

  
  

  

  窗口1   

     

  在select *从测试,,,——查看窗口1中的数据,就会发现原来窗口的数据发生了变化,这是不可重复读的一个典型例子。
  + - - - - - - - - - - - - - - - - - - + +
  | | id name 备忘录| |
  + - - - - - - - - - - - - - - - - - - + +
  |,1 | name1 | aaaa |
  |,2 |五星级| aaaa |
  |,3 | name3 | aaaa |
  |,4 | name4 | aaaa |
  |,5 | name5 | aaaa |
  + - - - - - - - - - - - - - - - - - - + +
  5行集(0.00秒)   

  RR模式下的测试
     

  再来看看RR这个隔离级别,其实有了上面的测试,就相对有底了。这是MySQL默认的隔离级别,会出现幻读的情况。   

     

  1   

     

  
  

  

  窗口1   

     

  首先修改隔离级别从RC到RR   

  

  在设定全球事务隔离级别可重复读;
  查询好,0行影响(0.00秒)
  ?查看事务隔离级别。
  在显示变量如“tx_isolation”;
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | Variable_name | Value ,,,,,,,,,|
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | tx_isolation |可重复读|
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  1行集(0.00秒)   

  

  
  

  

  在开始,,,——开启事务
  在select *从测试,,,——查看表测试的数据。
  + - - - - - - - - - - - - - - - - - - + +
  | | id name 备忘录| |
  + - - - - - - - - - - - - - - - - - - + +
  |,1 | name1 | aaaa |
  |,2 |五星级| aaaa |
  |,3 | name3 | aaaa |
  |,4 | name4 | aaaa |
  |,5 | name5 | aaaa |
  + - - - - - - - - - - - - - - - - - - + +
  5行集(0.00秒)   

     

  2   

     

浅MySQL中谈的事务隔离级别r11笔(记第86天)