zoukankan      html  css  js  c++  java
  • 脏读&幻读

    必要知识点

    mysql的事务隔离级别:

    1. Read Uncommitted (读未提交)
      • 该隔离级别的事务会读到其它未提交事务的数据,此现象也称之为 脏读 .
    2. Read Committed (读提交)
      • Oracle 和 SQL Server 的默认隔离级别.
    3. REPEATABLE READ (可重复读)
      • MySQL 默认的隔离级别.
      • 在begin开启事务后,select始终读到是事务开始时间点的状态.
      • 会产生幻读.
    4. SERIALIZABLE (序列化)
      • 串行顺序执行.
      • InnoDB 引擎会给读操作隐式加一把读共享锁,从而避免了脏读、不可重读复读和幻读问题.

    什么是脏读?

    当一个事务修改了另外一个事务未提交的数据时,既产生了脏读(Read Uncommitted)。

    什么是幻读?

    基于mysql的可重复读的事务隔离级别下存在的幻读现象。
    因为此级别虽然不能读到其他事务已经提交的数据,但是在数据的写上会存在直接影响。
    比如这个事务虽然在读取某行数据上是不存在的,但是却可以能够能够update、delete这行不存在的数据(这个不存在是相对于当前事务的,实质上是其他事务已经提交过的数据,只是无法被当前事务读取而已),这就是幻读现象。
    Oracle 数据库对于幻读的定义可能有所不同。

    参考:

    1. MySQL 事务隔离级别和锁
    2. 面试官:什么是脏读、幻读?
  • 相关阅读:
    第五周的学习进度情况
    周末经历之小体会
    构建之法阅读笔记5
    第四周的学习进度情况
    hashMap中如何形成循环链表的?
    代理模式
    sharing-jdbc实现读写分离及分库分表
    分库分表
    读写分离实现方式
    MySQL主从复制
  • 原文地址:https://www.cnblogs.com/xiangcaiduoyidian/p/14178770.html
Copyright © 2011-2022 走看看