数据库的隔离性
对于多个事务之间存在不同的隔离级别,隔离级别不同,在事务并发时存在一些问题?
一个用户操作对应一个事务
数据tb_user
用户A
用户B
假设用户A对tb_user插入一条记录 insert 还未提交,测试 用户B对tb_user查询,试问用户B能否查询到数据? 与数据库的事务隔离级别有关,如果此时数据库设置隔离级别为 “transcation_read_uncommitted” ,则以上案例用户B可以查询,如果设置“transcation_read_committed”或其他更高设置,则用户B不可以查询到。
隔离级别的不同可能产生以下问题:
1、 脏读: 一个事务读取另一个并发事务还未提交的数据
2、 不可重复读: 一个事务再次读取之前的事务时,两次读取的数据不一致 ,原因是被另一个事务修改了。(侧重修改)
3、 幻读: 一个事务重新读取查询时,返回的数据比上一次数据 会增加或减少记录(侧重于插入,删除)