一、并发事务所带来的问题
1、脏读:就是一个事务对数据进行查询操作时而另一个事物在修改这条数据但未提交,这时进行查询操作的事务就会读取到未提交的数据也就是脏数据
2、不可重复读:事务A查询一次数据接着事务B修改了数据并且已提交事务A继续执行操作查询数据读到了不一样的数据。
3、幻读:事务执行查询数据时不存在,插入数据时却报错,再次查询时还是在。原因在于事务A查询的时候数据库确实没有对应索引的数据但之后事务B却进行了插入操作,事务A再次查询时还是查不到(这是因为我们已经实现了可重复读)
二、怎样去解决
对事务进行隔离
隔离级别 脏读 不可重复度 幻读
————————————————————
读取未提交
read uncommit yes yes yes
————————————————————
读取已提交
read commit no yes yes
————————————————————
可重复读
repeatable read no no yes
————————————————————
串行化
serializable no no no
————————————————————
从上往下性能递减,功能递增
三、MySQL的默认隔离级别
是可重复读(repeatable read)原因在于串行化虽然能解决事务并发的所有问题,但关键在于串行化会导致只有一个事务执行完成后才能继续其他事务的执行也就没有并发这一说了,效率非常低。
标签:事务,no,read,默认,查询,并发,MySQL,yes,数据 From: https://blog.csdn.net/Lemon_man_/article/details/139218679