隔离性(isolation):一个事务所做的修改在提交之前,其他事务不可见。
事务
一个事务处理系统必须具有该四项特征ACID:
- 原子性(atomicity):一个事务是最小工作单元,要么全部执行要么回滚失败。
- 一致性(consistency):确保数据从一个状态转移成另一个状态。比如转账,我转你100,你增加100,我减少。
- 隔离性(isolation):一个事务所做的修改在提交之前,其他事务不可见。事务隔离是依靠回滚日志实现的,即MVVC,一条记录会记录多次提交的回滚日志undolog,也会记录transectionId。系统会判断删除回滚日志。
- READ UNCOMMITTED(读未提交ru):事务未提交,其他事务都是可见的。脏写脏读
- READ COMMITTED(读提交rc):大部分数据库隔离级别,Mysql是rr。一个事务提交之后,所做的修改才会被其他事务可见。解决了脏读,也叫不可重复读 重复读数据会不一致,也就是说在A事务提交后,B事务中能查看到修改。
- REPEATABLE READ(可重复度rr):从事务开始到结束,读取的记录是一致的,也就是说不管其他事务是否提交,都不影响该事务,该事务还是最初读取到的数据。解决了脏读和不可重复读,但没法解决幻读,指某个事务在读取某个范围记录时,另一个事务又在范围内插入了新纪录。之前的事务再次读取该范围的记录时,会产生幻行(强调范围查询而)。
- SERIALIZABLE(串行化):是最高的隔离级别,强制了事务串行执行。简单说,会在读取的每一行都加锁,所以并发大会导致超时和锁争用的问题。
- 持久性(durability):一旦提交,修改永久保存到数据库。
网友评论