前景提要
1.并发事务可能带来的问题
脏读:事务A正在修改数据,事务B也来访问数据,此时访问的是修改后的数据,若事务A操作不成功导致回滚,那么事务B查到的就是错误的数据了。
不可重复读:A多次读取同一数据,B在A多次读取的过程中修改了该数据,导致A多次读取到的数据不一致。
幻读:A多次查询同一条件,B在A多次查询的过程中增加了数据,导致A查询到了新增的数据。
2.隔离级别
读取未提交(Read uncommit) :可以读取未提交的数据。可能导致脏读、不可重复读、幻读。
读取已提交(Read commit) :只能读取已提交的数据。可能导致不可重复读、幻读。
**可重复读(repeatable commit):**多次读取的数据是一致的。事务开始另一事务就不能对该数据修改。可能导致幻读。
串行化(Serializable) :事务按顺序执行。安全但花销很大。
MySQL默认隔离级别为repeatable commit。