事务的特性、并发事务可能出现的问题、事务的隔离级别

事务的特性

众所周知的:ACID

A(atomicity)原子性

事务不可分割,共同成功或失败

C(atomicity)一致性

事务执行后,数据的完整性保持一致

I(atomicity)隔离性

事务互不干扰

D(atomicity)持久性

事务执行后数据就持久化到数据库

并发事务可能导致的问题

脏读

一个事务读到另一个事务更新但未提交的数据(回滚)

不可重复读

一个事务的两次查询中间有一个事务对数据做了更改,两次查询数据不同

幻读

一个事务根据条件更新全表,但是另一个事务又插入一条数据,第一个事务发现插入的数据没更新,就像出现了幻觉一样

事务的隔离级别

读未提交(Read uncommitted):读取未提交的数据,只解决更新丢失问题

读已提交(Read committed):读取已经提交的数据,所以可以解决脏读问题。读事务(线程),则允许其他事务读写,如果是写事务将会禁止其他事务访问该行数据

可重复读(Repeatable read):解决脏读和不可重复读问题,在这个事务还没结束时,其他事务不能访问该数据(包括了读写)

串行化(Serializable):事务只能一个接着一个地执行,但不能并发执行,解决所有问题,但是阻塞,效率低下!

那么我们就发现,除了效率低下的串行化,没有可以解决幻读问题的!那么,我们在平时的数据库使用中,是怎么解决幻读问题的。

如何解决幻读?

MVCC 

多版本并发控制解决了基于快照读下的幻读

Next-Key Lock

Next-Key Lock是间隙锁加行锁,很好的解决了当前读下的幻读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值