记录mysql两个事务更新同一行数据

背景:当两个事务的sql更新同一行数据,以最后一次事务提交的为准(废话)。

更新数据都是先读后写的,而这个读,只能读当前的值,称为“当前读”(current read)。

这个时候“两阶段锁协议”就要上场了。事务 B’没提交,这个版本上的写锁还没释放。而事务 A 是当前读,必须要读最新版本,而且必须加锁,因此就被锁住了,必须等到事务 B’释放这个锁,才能继续它的当前读,然后在更新。

多版本控制MVCC:不同时刻启动的事务会有不同的 read-view。在三个事务更新同一行记录,会创建三个视图A、B、C,同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)

猜你喜欢

转载自blog.csdn.net/weixin_45582733/article/details/118056455