一、MySql事务隔离级别&脏读、幻读、可重复度
1. MySql隔离级别
隔离级别按照RU====》RC====》RR====》序列化,隔离级别依次变高,但是效率依次变低,尤其是高并发场景下,一般建议使用RC级别,综合考虑性能和数据隔离要求。
读未提交(Read Uncommited):
当前事务可以读取到其他事物已执行但未提交的数据,可能会导致脏读、幻读和重复读
读已提交(Read Commited):
当前事务可以读取到其他事物已经执行并且提交的数据,可能会导致幻读和重复读
可重复度(Repeatable Read):
默认隔离级别,同一个事务里,对同一数据多次读取结果是一致的,解决了脏读和重复读,可能会导致幻读
序列化(Serializable):
完全ACID原则,事务一个个执行,事务之间相互不干扰

2.脏读、幻读和重复读
脏读:
读取到了其他事务未提交的数据,比如A事务将字段x由1更新成了2,未执行commit,此时B事务读取该数据,查到字段x结果为2
重复读:
同一个事务里面,对同一个数据的多次结果不一致,比如:B事务首先查询出来某一行数据字段x=1,然后A事务此时将该行数据x字段改成了2,接着B事务再次去查询,查出来改行数据字段x=2,认为存在不可重复度的问题。如果隔离级别是RR(可重复度),则此时B事务查出来x扔为1。
幻读:
与重复读比较类似,但是幻读一般是多行数据处理中。比如A事务查询出来某个

最低0.47元/天 解锁文章
1840

被折叠的 条评论
为什么被折叠?



