一、关系型数据库的ACID
1、什么是事务
事务时作为单个逻辑单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行。事务时一个不可分割的工作逻辑单元。
2、事务的四大特性ACID
原子性(Atomicity)
事务是一个完整的操作。事务的各步骤是不可分割的(原子的);要么都执行,要么都不执行。
一致性(Consistency)
当事务完成时,数据必须从一个一致性状态到另一个一致性状态
隔离性(Isolation)
对数据进行修改的所有并发事务都是彼此隔离的
持久性(Durability)
事务完成后,它对数据库的修改被永久保存。事务日志能够保存事务的永久性
3、事务引发问题
脏读
一个事务读到另一个事务未提交的数据。
不可重复读
一个事务多次读取同一个记录,结果不一致。产生原因是数据更新。
幻读
事务a更新数据但未提交,事务b添加(add)一行新数据,致事务a再次读取时为事务b添加后的记录
4、事务的四种隔离级别
Read uncommitted
即读未提交,一个事务读取到其他事务未提交的数据,是级别最低的隔离机制。会产生脏读、不可重复读、幻读。
Read committed
即读已提交,一个事务读取到另一个事务提交后的数据。Oracle默认隔离级别。会产生不可重复读、幻读。
Repeatable read
即可重复读,一个事务对同一份数据多次读取结果一致。MySQL默认的隔离级别。会产生幻读。
Serializable 序列化
事务串行化执行,隔离级别最高,牺牲了系统的并发性。可以解决并发事务的所有问题。但是效率地下,消耗数据库性能,一般不使用
二、CAP理论
1、什么是CAP
CAP理论,指在一个分布式系统中 Consistency(强一致性)、Availability(高可用性)、Partition tolerance(分区容错性),三者不可兼得。
1)C:Consistency(强一致性)
2)A:Availability(高可用性)
3)P: Partition tolerance(分区容错性)
2、、CAP的3进2
CAP理论在分布式存储系统中,最多只能实现两点,而由于当前网络硬件肯定会出现延迟丢包等所以 分区容错性是我们必须实现的,所以我们只能在一致性和可用性之间进行权衡。
没有NoSql系统能同时保证这三点
C:强一致性
A:高可用性
P:分区容错性
3、CAP具体实现
CA:传统Oracle数据库
AP:大多数网站架构的选择
CP:Redis、MongDB
4、BASE是什么
BASE为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案,即
基本可用:(Basically Available)
软状态:(Soft state)
最终一致(Eventually consistent)