读未提交(read uncommitted)
概念
- 一个事务还没有提交时,它做的变更就能被别的事务看到
- 可能会出现脏读,一个事务读到另一个事务未提交的更新数据
读已提交(read committed)
概念
- 一个事物提交之后,它做的变更才会被其他事务看到
- 读已提交虽然解决了所谓的脏读问题,但是出现了新问题,那就是不可重复读
- 不可重复读, 一个事务两次读同一行数据,可是这两次读到的数据不一样
可重复读(repeatable read)
概念
- 一个事物执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的
- 未提交变更对其他事务是不可见的
- 可重复读虽然解决了不可重复读,但是可能会出现了幻读
- 幻读,一个事务执行两次查询,但第二次查询比第一次查询多出了一些数据行
串行化(serializable)
概念
- 对于同一行记录,写会加“写锁”,读会加“读锁”
- 当出现锁冲突时,后访问的事务需要等前一个事务执行完成,才能继续执行。
- 顺序读是最严格的事务隔离级别。它要求所有的事务排队顺序执行
- 即事务只能一个接一个地处理,不能并发
- 自然也就解决了上面的所以问题