0
数据库并发控制:从丢失更新到锁、MVCC与隔离级别
在数据库故障中,最令人头疼的往往不是程序直接报错,而是所有请求看起来都成功了,最终数据却悄悄出了问题。一个经典例子是账户余额为 100 元,两个请求几乎同时读取余额,各自扣除 10 元,然后都把 90 元写回数据库。两次扣款均返回成功,余额却只减少了 10 元。单独检查每个请求,读取、计算、写入都没有明显错误;问题出在两个事务的执行过程发生了重叠。