mvcc
对于同一个记录,如果对它开启了多次事务
对于同一个记录,如果对它开启了多次事务,就会产生如图中的多个快照读 ABC。 假设事务ABC分别对应于上述快照读。由图可知当前值为4,如果事务 A 需要读取该记录值,那么需要由当前值 依次回滚 从而得到 1 这个值
以意思来看就是一个读锁,一个写锁
以意思来看就是一个读锁,一个写锁。 也就是说数据库会拥有多种版本的 Record,而每个版本都有时间纪录,让 RDBMS 知道哪份版本才是最新的,而 Record 太旧的版本会被 RDBMS 自动删除。 因为有版本的机制,因此在 MVCC 中只有 X LOCK,也就是写锁,没有 S LOCK,也就是读锁
acid 是数据库事务满足的四个特性
ACID 是数据库事务满足的四个特性,在哪些地方需要用到事务呢?例如在数据库中并发更新一个商品的点赞数,通常的做法是: 如果这中间存在并发,而恰好CPU调度到另一个进程中执行,数据就有可能紊乱。事务便是因此而生的,事务保证了一系列动作要么全都被 执行,要么全都没有执行。 为了保证并发更新的数据准确性,我们就需要了解到锁这个概念,即,想要修改这个数据,必须要先持有锁,锁的持有者可以更新数据, 其他的只能等待下一次夺取锁