事务隔离级别/缺陷 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交(read uncommit) | 可能 | 可能 | 可能 |
读已提交(read commit) | 不可能 | 可能 | 可能 |
可重复读(repeated read) | 不可能 | 不可能 | 可能 |
可串行化(Serializable ) | 不可能 | 不可能 | 不可能 |
脏读是一个事务读取到另一个事务未提交的数据。比如事务A把学员分数改为1,但是未提交,此时事务B读取到了这个分数,但是事务A把事务回滚了,此时事务B获取到了一个错误的数据
不可重复读是指在一个事务中两次读取的结果不同,比如事务A先获取到了学员分数为1,此时事务B将分数修改为2并提交,然后事务A再次读取学员分数得到2;造成在同一个事务中两次读取的结果不一致;造成不可重复读的操作是update
幻读是指事务A读取与搜索条件相匹配的若干行。事务B以插入或删除行等方式来修改事务A的结果集,然后再提交。比如数据库中存在学员tom的语文,数学成绩,事务根据学员名称去获取成绩查询出了语文,数学两科成绩。但此时事务B向数据库中插入了tom的英语成绩;此时数据造成了事务A的查询结果和实时不符,像出现“幻觉”一样。造成幻读的操作是delete或insert
创作不易,转载请注明文章来源为www.full-satcker.com
本文由博客一文多发平台 OpenWrite 发布!