分布式事务及CAP和BASE理论
💡
原文中文,约1400字,阅读约需4分钟。
📝
内容提要
当前数据库的默认事务隔离级别(如MySQL、Oracle、PostgreSQL)常常无法满足隔离性要求,READ-COMMITTED级别无法解决脏读、不可重复读和幻读问题。数据库事务特性包括原子性、一致性、隔离性和持久性(ACID)。不同隔离级别影响性能,隔离级别越高,性能越低。主要隔离级别有:读未提交、读已提交、可重复读和序列化,其中可重复读是MySQL的默认级别,通过间隙锁防止幻读。
🎯
关键要点
-
当前数据库的默认事务隔离级别无法满足隔离性要求,READ-COMMITTED级别无法解决脏读、不可重复读和幻读问题。
-
数据库事务的特性包括原子性、一致性、隔离性和持久性,简称ACID。
-
脏读是指一个事务访问到另一个事务未提交的数据,可能导致读取到不存在的数据。
-
不可重复读是指一个事务两次读取同一条记录时,结果不一致。
-
幻读是指一个事务两次读取时,得到的记录条数不一致。
-
SQL标准定义了四个隔离级别:读未提交、读已提交、可重复读和序列化,隔离级别与数据库性能呈反比。
-
读未提交级别允许脏读和不可重复读,但不允许更新丢失。
-
读已提交级别避免脏读,但允许不可重复读。
-
可重复读级别保证同一事务内的查询结果一致,但可能出现幻读,MySQL的默认隔离级别。
-
序列化级别要求所有事务串行执行,效率最低。
-
隔离级别的提升会导致并发能力下降,二者呈负相关关系。
➡️