事务隔离级别

工作中对于事务的操作往往存在并发的可能,根据事务不同的隔离级别,会出现不同类型的问题,简单来说分为以下几种:
1.脏读。事务A对数据做了更新,事务B读取到了这个数据,然后事务A回滚,事务B读到的数据就是“脏数据”。
2.不可重复度。事务A的过程中,会多次读取同一个数据,在事务A运行过程中,事务B对数据做了更新并且提交,那么事务A多次读取的结果因为事务B的影响,可能不一致。
3.幻读。事务A把数据库中某一日期字段做了同样更新,去掉了时分秒,只保留年月日。这时事务B插入了一条新数据,依然带有时分秒。当事务A提交成功后,会发现数据里依然有没有被更新的记录。
实际开发工作中,一般情况下我们会通过设置事务隔离级别,避免脏读的存在。对于不可重复度和幻读,一般通过代码实现的乐观锁,或者MYSQL的行级悲观锁来避免带来影响。
































事务隔离级别脏读不可重复读幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)