• 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
  • 相关阅读:
    YOLOv8-pose针对视频实时提取打印对应关节点序号及坐标
    【FPGA教程案例53】语音案例2——基于FIR低通滤波器的语音信号降噪FPGA实现
    堆排序及哈夫曼编码实现数据压缩
    SpringBoot 使用 Feign 无废话 All-in-one 指南
    基于VMware从零搭建Linux系统
    LeetCode75——Day21
    【Python】通过Fourier变换实现频域滤波
    golang工程——grpc 连接池简单实现
    【Redis1】安装,操作,持久化,Jedis,数据库总结
    使用标准信号检测 VM振弦采集模块测量精度(二)
  • 原文地址:https://blog.csdn.net/weixin_39735909/article/details/133635807