数据库事务隔离级别
来源:互联网 发布:美国恐怖故事 知乎 编辑:程序博客网 时间:2024/06/06 09:37
隔离级别指定当前事务执行时所不允许的交互作用类型, 即事务间是否相互隔离,或它们是否可以读取或更新被另一事务所使用的信息。
首先了解以下概念:
●脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。比如:某时刻会话A修改了一个数据,但还未提交,此时会话B,读取了该数据,这是会话A回滚了事物,这就导致数据出现了不一致状态,这就是脏读。
●不可重复读(non-repeatable read):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。比如:某时刻会话A的一个事物里查询一个数据,得到的数据是1,这是会话B修改了该数据的值为2,并提交了,此时会话A的事物又要读取该数据,这是的数据是2,就样就出现了同一个事务内,读的结果不一样,这就是不可重复读。(oracle和ms-sql默认的等级都是这个)
●幻像读(phantom read):同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。比如:某时刻会话A的一个事物里读取某一范围数据行的过程中,这是会话B对数据进行了insert操作,,此时会话A的事物又要读取数据行时,就会发现新的幻影行。
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题,如下表:
首先了解以下概念:
●脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。比如:某时刻会话A修改了一个数据,但还未提交,此时会话B,读取了该数据,这是会话A回滚了事物,这就导致数据出现了不一致状态,这就是脏读。
●不可重复读(non-repeatable read):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。比如:某时刻会话A的一个事物里查询一个数据,得到的数据是1,这是会话B修改了该数据的值为2,并提交了,此时会话A的事物又要读取该数据,这是的数据是2,就样就出现了同一个事务内,读的结果不一样,这就是不可重复读。(oracle和ms-sql默认的等级都是这个)
●幻像读(phantom read):同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。比如:某时刻会话A的一个事物里读取某一范围数据行的过程中,这是会话B对数据进行了insert操作,,此时会话A的事物又要读取数据行时,就会发现新的幻影行。
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题,如下表:
0 0
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- 数据库事务隔离级别
- Prime Ring Problem 素数环问题
- 蓝桥杯——买不到的数目
- 用户界面View之ViewGroup
- HIve join详解
- 在mac上安装和使用mysql-5.6.24
- 数据库事务隔离级别
- android 开发环境的效率匹配(host修改和http抓包)
- 短信监听
- 转义字符
- Java_多核并行简介
- SAS安装数据SID文件无效问题的解决
- 模拟退火算法
- MySQL索引背后的数据结构及算法原理
- Android自定义属性时TypedArray的使用方法