Mysql学习笔记(十二)

  • mysql事务测试:

      关闭自动提交事务,--查看是否自动体骄傲,1表示开启,0表示关闭。
      select @@autocommit;
      设置关闭:set autocommit =0;
      事务四个隔离级别:1-4级别越来越高。
      1.read uncommitted --读未提交
      2.read committed --读已提交
      3.repeatable read --可重复读
      4.seariable --序列化执行,串行执行。
      产生数据不一致的情况:
        脏读,补课重复读,幻读。
    
  • 测试1:脏读(读未提交)read uncommitted;

    all:set session transaction isolation level read uncommitted;
    A:start transaction;
    A:select * from psn;
    B:start transaction;
    B:select * from psn;
    A:update psn set name='zsk';
    A:select * from psn;
    B:select * from psn;//读取错误,脏读,A事务没有commit,读取到了不存在的数据。
    A:commit;
    B:select * from psn;//正确读取,A事务提交,数据永久修改。
    
  • 测试2:读已提交 read committed

    all:set session transaction isolation level read committed;
    A:start transaction;
    A:select * from psn;
    B:start transaction;
    B:select * from psn;
    A:update psn set name = 'zs' where id =1;
    B:select * from psn;//不会产生脏读,督导还是原来值,zsk;
    A:commit;
    B:select * from psn;//不可重复读,数据不一致,zs;
    
  • 测试3:可重复读repeatable read

    A:set session transaction isolation level repeatable read;
    B:set session transaction isolation level repeatable read;
    A:start transaction;
    A:select * from psn;
    B:start transaction;
    B:select * from psn;
    A:update psn set name='wangwu' where id=3;
    A:commit;//A执行提交
    B:select * from psn;//读不到wangwu,仍为zs,所以可重复读。
    B:commit;//B也执行提交。
    B:select * from psn;//读取到wangwu;
    A:start transaction;
    A:insert into psn vales(4,'s');
    B:start transaction;
    B:insert into psn vales(4,'s');//报错,提示重复逐渐,此时产生幻读。
    B:select * from psn;//只有3条数据,没有id为4的,但插不进去。
    
  • 总结:

    隔离级别        出现的异常情况
    读未提交        脏读        不可重复读        幻读
    读已提交        x           不可重复读        幻读
    可重复读        x           x                幻读
    序列化执行      x           x                x
    
    幻读指的是插入和修改数据的时候,指的是幻读,查询是不会产生。以上学习的是数据库级别的事务,掌握事务隔离级别和数据不一致的情况即可。后续学习声明式事务及事务的传播特性以及分布式事务。
    

posted on 2022-07-31 11:32  张少凯  阅读(21)  评论(0编辑  收藏  举报

导航