数据库—事务—隔离级别
隔离级别 数据库事务的四个基本特征(ACID) 原子性(Atomic):事务中包含的操作被看做一个整体的业务单元,这个业务单元中的操作,要么全部成功,要么全部失败。 一致性(Consisitency):事务在完成时,必须使所有的数据都保持一致状态,在数据库中所有的修改都基于事务,保证了数据的完整性。例,A账户有一千元,B账户有一千元,A+B = 2000元, A向B转账100元,此时A有900元,B有1100元,A+B依然是2000元。 隔离性(Isolation) :当多个线程访问同一数据,此时数据库同样的数据就会在各个不同的事务中访问,这样会产生丢失更新。例,事务A读取了事务B尚未提交的数据。为了压制丢失更新的产生,数据库定义了隔离级别的概念。 持久性(Durability):事务结束后,所有的数据都会固化到一个地方,如保存到磁盘当中,即时断电重启也可以提供给应用程序访问。 丢失更新类型 这四个特性,除了隔离性都比较好理解。我们再举例说明下,在多个事务同时操作数据的情况下,会引发丢失更新的场景。例如,电商有一种商品,在疯狂抢购,此时会出现多个事务同时访问商品库存的情景,这样就会产生丢失更新。一般而言,存在两种类型的丢失更新。 假设某种商品A库存数量为100,抢购时,每个用户仅允许抢购一件商品,name在抢购过程中就可能出现如下场景: 可以看到,T5时刻事务1回滚