Mysql 的隔离级别

隔离性(isolation):一个事务所做的修改在提交之前,其他事务不可见。

事务

一个事务处理系统必须具有该四项特征ACID:

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

你可能感兴趣的:(Mysql 的隔离级别)