事务隔离级别

JDBC定义五种隔离级别:
TRANSACTION_NONE JDBC:不支持事务
TRANSACTION_READ_UNCOMMITTED
TRANSACTION_READ_COMMITTED
TRANSACTION_REPEATABLE_READ
TRANSACTION_SERIALIZABLE

未提交读(Read Uncommitted):读取到其他未提交事务修改的数据。会产生脏读,不可重复读,幻读。
脏读:A事务读取B事务未提交的更改数据,B事物回滚,A事务做其他操作。


已提交读(Read Committed):只能读取到已经提交的数据 。会产生不可重复读,幻读。
不可重复读:A事务读取B事务已经提交的数据,导致前后两次读不一致。


可重复读(Repeated Read):同一事务中多次读取到的同样数据的结果是一致的,其他事务不能更改所选数据,但可以更改其他数据(修改或删除)。
幻读:A事务读取B事务更改的其他更改数据(修改或删除)。


串行化(Serializable):所有事务一个接着一个的执行。不会产生脏读,不可重复读,幻读。
实现方法:
基于锁来实现并发控制的数据库,串行化要求在执行范围查询的时候,需要获取范围锁。
不是基于锁实现并发控制的数据库,检查到有违反串行操作的事务时,需回滚该事务。 

InnoDB默认隔离级别Repeated Read采用Next-key Lock解决幻读问题,MVCC通过读取不同版本的数据来解决不可重复读问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值