数据库的脏读、不可重复读和幻读区别
1、数据库的ACID
在数据库中,事务是要满足ACID的,即A: 原子性、C:一致性、I:隔离性、D:持久性。其中隔离性是最放松的一个,可以利用数据库锁的机制或者版本并控制机制获取更高的隔离级别,但是随着隔离级别的提高,数据的并发能力有所下降。因此如何在并行和隔离性之间做一个权衡是一个至关重要的问题。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。2、读数据出现的几种问题:
1) 脏读:当一个事务正在访问数据,并对数据进行了修改,但是该修改确未提交到数据库中,这时另外一个事务也访问这个数据,然后使用了这个修改的数据,那么读到的这个数据就是脏数据。
(读到了未提交的数据,解决方法:在写的时候加锁)
2)不可重复读:一次事务内的两次(多次)相同查询,查询到了不同的结果。(在读数据的时候加锁)
3)幻读:一次事务内多次查询返回的结果集不一样(比如增加了或者减少了行记录)。(串行化即可解决)。
脏读--------->不可重复读----------->幻读,事务的隔离性在不断提高,但是并行不断降低。
更多精彩