• MySQL-8.0 事务隔离级别


    查看数据库事务隔离级别

    mysql> show variables like 'transaction%';
    mysql> select @@transaction_isolation;
    mysql> SELECT @@GLOBAL.transaction_isolation, @@GLOBAL.transaction_read_only;
    mysql> SELECT @@SESSION.transaction_isolation, @@SESSION.transaction_read_only;
    

    修改事务隔离级别的方式

    • 由低到高分别为
      • read uncommitted (读未提交)
      • read committed (读提交)
      • repeatable read (重复)
      • Serializable (序列化)

    1.只在本次会话有效

    mysql> set session transaction isolation level read committed;
    

    2.设置全局的事务隔离级别,该设置不会影响当前已经连接的会话,新会话,将使用新设置的事务隔离级别

    mysql> set global transaction isolation level read committed;
    

    3.修改配置文件,重启后生效

    [mysqld]
    transaction-isolation = REPEATABLE-READ
    transaction-read-only = OFF
    
    select id,name,count from ent_stock;
    select id,name,count from ent_stock lock in share mode;
    update ent_stock s set s.count = s.count-1 where s.name = '库存-1';
    insert into ent_stock(id,name,count) values(uuid(),'库存-3',1000);
    
    级别 脏读 不可重复读 幻读
    ru
    rc
    rr
    ru
    • Read-Uncommitted
    Transication A Transication B
    begin; begin;
    -
    -
    -
    - commit;
    -
    • Read-Committed(不可重复读)
      1.解决脏读
    Transication A Transication B
    begin; begin;
    -
    -
    -
    - commit;
    -
    • Repeatable Read(可重复读)
    Transication A Transication B
    begin; begin;
    image -
    - image
    image -
    - commit
    image -
    • 事务A: update ent_stock s set s.count = count-1 where s.name = '库存-1';
    • 事务B: update ent_stock s set s.count = count-1 where s.name = '库存-1';
    • 事务A给库存-1加了X锁,事务B更新时只能阻塞等待事务A提交后才可提交此次更新,反之同理
    • 普通select是查询快照读,select ... lock in share mode 使用当前读,当其他事务有update操作,本事务会阻塞,直到其他事务释放锁
  • 相关阅读:
    有关同时包含<winsock2.h>与<windows.h>头文件的问题
    如何使用微软提供的TCHAR.H头文件?
    下面的程序在VC6通过,在VS2008不能,错误信息都是“不能将参数……从const char[]转换为LPCWSTR”
    Android开发学习日志(四)
    爬虫开发(一)
    java集合源码详解
    Paxos算法
    linux 常用命令
    Bitmap的原理和应用
    Flink Checkpoint 问题排查实用指南
  • 原文地址:https://www.cnblogs.com/chenzhaoyu/p/15085444.html
Copyright © 2020-2023  润新知