• mysql-隔离级别


    1. ACID四大特性

    1)原子性 事务是一个整体,不可拆分。要么整体成功,要么整体失败。
    2)一致性 事务前后,数据库的状态满足所有的完整性约束。【状态守恒】
    3)隔离性 多个并发事务相互独立、相互隔离、互不影响。【并发控制】
    4)持久性 事务完成后, 结果需要持久化。【磁盘永久存储】
    
    • 1
    • 2
    • 3
    • 4

    2. 隔离级别

    读未提交【非常不严谨的隔离级别、生产上禁止使用】
    读已提交【Oracle 数据库默认的隔离级别】
    可重复读【MySQL数据库默认的隔离级别】
    串行化 【排队执行、读写互斥。最安全、性能最差】
    
    • 1
    • 2
    • 3
    • 4

    3. MySQL 查看隔离级别

    3.1 查询当前的会话

     select @@tx_isolation;
    
    • 1

    3.2 查询全局的事务

    select @@global.tx_isolation;  
    
    
    • 1
    • 2

    MySQL 读未提交:
    一个事务读取到了另一个事务没有提交的数据

    MySQL 读已提交
    一个事务只能读取另一个事务已经提交的数据【无法解决不可重复读的问题】

    1) 设置隔离级别
    SET SESSION TRANSACTION ISOLATION LEVEL READ committed;
    SET SESSION TRANSACTION ISOLATION LEVEL READ committed;
    
    
    2)查询隔离级别
    mysql> select @@global.tx_isolation;
    +-----------------------+
    | @@global.tx_isolation |
    +-----------------------+
    | READ-COMMITTED        |
    +-----------------------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    MySQL 可重复读:
    在同一个事务中、多个相同的查询返回相同的结果

    1)设置隔离级别
    mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
    mysql> SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
    
    
    2)查看隔离级别
    
    mysql> select @@global.tx_isolation;
    +-----------------------+
    | @@global.tx_isolation |
    +-----------------------+
    | REPEATABLE-READ       |
    +-----------------------+
    1 row in set (0.00 sec)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    MySQL 串行化:
    事务依次排队执行。性能非常差

    1)设置隔离级别
    SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
    SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
    
    2)查询隔离级别
    mysql> select @@global.tx_isolation;
    +-----------------------+
    | @@global.tx_isolation |
    +-----------------------+
    | SERIALIZABLE          |
    +-----------------------+
    1 row in set (0.00 sec)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    JavaSE面试题05:类初始化和实例初始化
    操作系统(2)--进程状态、控制、通信,线程的实现方式、切换、处理机的调度。
    显卡---显卡驱动---CUDA---Cudnn
    办理的流量卡怎么判断是否激活成功?看实名认证还是看充值?
    [vuex3罕见错误] rawModule is undefined
    关于u16强转u8指针类型
    竞赛 深度学习+opencv+python实现车道线检测 - 自动驾驶
    握住音乐的法宝 - 简谱
    java进阶-Netty
    docker(1) dockfile制作docker java镜像 并启动
  • 原文地址:https://blog.csdn.net/weixin_39735909/article/details/133635807