隔离级别
三种读写异常
读写异常 | 描述 | 解释 |
---|---|---|
脏读 | 在一个事务处理过程里读取了另一个未提交的事务中的数据 | 当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致 |
不可重复读 | 对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值 | 不可重复读和脏读的区别是,脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据 |
幻读 | 事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改 | 幻读和不可重复读都是读取了另一条已经提交的事务,所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体 |
四种隔离级别
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交 | 允许 | 允许 | 允许 |
读提交 | 不允许 | 允许 | 允许 |
可重复读 | 不允许 | 不允许 | 允许 |
序列化 | 不允许 | 不允许 | 不允许 |