数据库一致性模型详解
1. 一致性概述
在数据库领域,一致性是确保数据准确和可靠的关键概念,主要包括以下两种类型:
- 单请求内的一致性 :指单个请求返回的数据在内部是连贯的。例如,读取关系表中的所有行时,通常能看到表在某一时刻的状态,查询开始后对表的修改不会包含在内。
- 与现实的一致性 :即数据要与数据库试图反映的现实情况相符。以银行交易为例,交易结束时仅保证一致性是不够的,还必须正确反映实际账户余额,牺牲准确性的一致性通常是不可接受的。
2. ACID 和 MVCC
关系型数据库主要采用两种架构模式来满足一致性要求:ACID 事务和多版本并发控制(MVCC)。
2.1 ACID 事务
ACID 事务具有以下四个特性:
- 原子性 :事务是不可分割的,事务中的所有语句要么全部应用到数据库,要么都不应用。
- 一致性 :事务执行前后,数据库保持一致状态。
- 隔离性 :多个用户可以同时执行多个事务,但一个事务不应看到其他正在进行的事务的影响。
- 持久性 :一旦事务保存到数据库(在 SQL 数据库中通过 COMMIT 命令),即使操作系统或硬件出现故障,其更改也会持久保存。
需要注意的是,即使像 Oracle 这样的关系型数据库,默认情况下也不会实现 ACID 所要求的事务之间的严格隔离,因为完全隔离所有事务的开销通常太高。 <
超级会员免费看
订阅专栏 解锁全文
1426

被折叠的 条评论
为什么被折叠?



