1.先说下在没有事务隔离级别(Read Uncommitted)下,会遇到的三个问题
a.脏读:脏读的产生是因为一个事务中的数据修改(增删改)在未提交之前,会被事务外或者其他事务中查询到。
b.不可重复读:产生是因为一个事务中的数据修改(增删改)在提交之后,会被其他事务中查询到。
c.幻读:当事务a修改了整表数据,事务b又增加了一条数据,提交之后会发现增加的数据没有被修改。
2.三个问题如何解决
a.脏读的问题是 设置隔离级别为(READ COMMITTED 不可重复读)
b.不可重复度的问题是设置鼓励级别为(REPEATABLE READ 可重复读)
c.幻读的解决办法是设置隔离级别为(SERIALIZABLE 串行化),通过锁表来解决
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
读未提交(read-uncommitted) | 是 | 是 | 是 |
不可重复读(read-committed) | 否 | 是 | 是 |
可重复读(repeatable-read) | 否 | 否 | 是 |
串行化(serializable) | 否 | 否 | 否 |