脏读、不可重复读、幻读
脏读
脏读是指一个事务读取到其他事务没有提交的数据。
Hr修改了小明的工资原来工资3000为8000,但是没有提交。
小明读了数据库发现我工资是8000, 换天洗地。
Hr发现了错误回滚了事务。
不可重复读
不可重复读是指一个事务内多次根据同一查询条件查询出来的同一行记录的值不一致。
小明读取自己的工资是3000还没有读完;
Hr修改了8000,并且提交了。
我读了数据库发现工资是8000;
如果再修改事务完全提交之后再读, 基本就可以避免这种情况。
幻读
幻读是指一个事务内多次根据同一条件查询出来的记录行数不一致。
事务1,目前读取工资8000的有10个人;
事务2,插入一个8000的;
事务1,读8000的有11个人。
不可重复读侧重修改, 同样的条件值不一样。
幻读侧重插入或者删除, 同样的条件记录数不一样;
四种隔离级别:
|
隔离级别
|
脏读
|
不可重复读
|
幻读
|
|
READ UNCOMMITED (读未提交)
|
允许
|
允许
|
允许
|
|
READ COMMITED (读提交)
|
不允许
|
允许
|
允许
|
|
REPEATABLE READ (可重复读)
|
不允许
|
不允许
|
允许
|
|
SERIALIZABLE (串行化)
|
不允许
|
不允许
|
不允许
|

浙公网安备 33010602011771号