ACID
原子性(Atomic):同一项业务处理过程中多个数据修改必须同时成功或撤销
隔离性(Isolation):不同业务处理过程中各自读、写数据不会相互影响
持久性(Durability):被成功提交的数据修改都能够正确地被持久化
一致性(Consistency):数据正确不会产生矛盾
原子性和持久性
崩溃处理
FORCE 与 STEAL
提交日志(Commit Logging)
存在问题
预写日志(Write-Ahead Logging)
影子分页
隔离性
锁
排他锁(X-Lock)
共享锁(S-Lock)
范围锁(Range Lock)
隔离级别
无隔离(None):脏写(Dirty Writes)
读未提交(Read Uncommitted):脏读(Dirty Reads)
读已提交(Read Committed):不可重复读(Non-Repeatable Reads)
可重复读(Repeatable Read):幻读(Phantom Reads)
只读事务
读写事务
可串行化(Serializable)
快照
存储方式
Append-Only:PostgreSQL
Delta:MySQL、Oracle
Time-Travel:HANA
时间误差
问题分析
解决方案
写等待:Spanner
时间误差
处理过程
存在问题
读等待:CockroachDB
时间误差
处理过程
存在问题