事物的基本要素: ACID。
事物的并发问题:
- 脏读: 事物A读取了B的数据,然后B回滚操作,那么A读取到的数据是脏数据。
- 不可重复读: 事物A多次读取同一数据,事物B在事物A读取的过程中,对数据做了更改并提交,导致事物A多次读取同一数据时,结果不一致。
- 幻读: 系统管理员A将数据库中所有学生成绩从具体分数改为ABCDE等级,但系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改变过来,就好象发生了幻觉一样,这就叫幻读。
小结:不可重复读和幻读很容易混淆,不可重复读侧重于修改,幻度侧重于新增或删除。解决不可重复读的问题只需要锁住满足条件的行,解决幻度需要锁表。
MySQL事物隔离级别
Serializable是最高的事务隔离级别,同时代价也花费最高,性能很低,一般很少使用,在该级别下,事务顺序执行,不仅可以避免脏读、不可重复读,还避免了幻读。