zoukankan      html  css  js  c++  java
  • mysql事务隔离级别

    概念

    隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用。

    脏读:读取未提交的数据;

    不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间另外的事务修改了符合条件的数据;

    幻读(Phantom Read):在一个事务的两次查询中数据行数不一致,这可能是两次查询过程中另外的事务对表做了insert或者delete操作;

    注意:不可重复读和幻读的区别。两者都是数据不一致,前者是同一事务中两次查询,结果的数据行数一样,具体某些行的某些列数据不一样;后者指的是同一事务中,前后两次查询结果的行数不一样(两次查询期间另外的事务执行了insert或者update)。

    为什么要分成两种形式呢,控制机制不一样。对于前者, 只需要锁住满足条件的记录即可。对于后者,要锁住满足条件及其相近的记录甚至整个表。

    Read Uncommitted(未提交读):在该隔离级别,所有事务都可以看到其他未提交事务的执行结果,即允许读取脏数据;
    Read Committed(已提交读):这是大多数数据库系统的默认隔离级别(SQL SERVER的默认隔离级别,但不是MySQL默认的),定义:一个事务只能看见已经提交事务所做的改变;
    Repeatable Read(可重复读):这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行;
    Serializable(可串行化):这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

  • 相关阅读:
    JAVA 问题
    WebStrom配置多个项目的Dweployment时,设置默认的启动配置
    C#中有关数组和string引用类型或值类型的判断
    Delegate(代理)异常:该委托必须有一个目标
    RMAN BACKUP
    Oracle ORA-01033: 错误解决办法
    微信公众号开发 接口配置信息 配置失败
    使用JAVA开发微信公众平台(一)——环境搭建与开发接入
    微信开发准备(四)--nat123内网地址公网映射实现
    nat123安装启动教程帮助
  • 原文地址:https://www.cnblogs.com/shizheyangde/p/7389624.html
Copyright © 2011-2022 走看看