首页 > 代码库 > 事务的隔离级别
事务的隔离级别
数据库系统有四个隔离级别,分别为未提交读、已提交读、可重复读、串行化
大多数数据库的默认级别就是Read committed,比如Sql Server , Oracle。Mysql的默认隔离级别就是Repeatable read。
READ UNCOMMITTED(未提交读)
事务A执行的操作未提交,但是事务B还是能看到修改,这时会产生脏读的情况。
READ COMMITTED(提交读)
事务A先是读取了数据,这时事务B更改了同一数据,并已提交,这时事务A再次读取这个数据时就会发现两次数据不一致,这就产生不可重复读的现象。
REPEATABLE READ(可重复读)
当事务A读取记录时,会对此记录添加一个共享锁,即事务B不能在事务A结束前对记录进行修改。
可能产生的问题:当执行范围查询时,可能会产生幻读。如事务A先查询一个消费总量,接着事务B增加一条消费记录,这时事务A再次查询消费总量时,就会发现两次查询不一致
SERIALIZABLE(序列化)
添加范围锁(比如表锁,页锁等、),直到transaction A结束。以此阻止其它transaction B对此范围内的insert,update等操作。幻读,脏读,不可重复读等问题都不会发生。
脏读 | 不可重复读 | 幻读 | |
Read uncommitted | √ | √ | √ |
Read committed | × | √ | √ |
Repeatable read | × | × | √ |
Serializable | × | × | × |
事务的隔离级别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。