多用户同时操做一条Mysql记录问题

场景:两个用户同时读取了数据库中的一条记录,此时用户A对其中一个字段的值进行了修改操做并进行了提交,后来用户B也对这个字段进行了修改,用户B的提交将会覆盖用户A提交的值html

 

关于乐观锁悲观锁java

悲观锁:每次去取数据,很悲观,都以为会被别人修改,因此在拿数据的时候都会上锁。sql

简言之,共享资源每次都只给一个线程使用,其余线程阻塞,等第一个线程用完后再把资源转让给其余线程。数据库

synchronized和ReentranLock等都是悲观锁思想的体现。 segmentfault

乐观锁:每次去取数据,都很乐观,以为不会被被人修改。bash

所以每次都不上锁,可是在更新的时候,就会看别人有没有在这期间去更新这个数据,若是有更新就从新获取,再进行判断,一直循环,直到拿到没有被修改过的数据。并发

CAS(Compare and Swap 比较并交换)就是乐观锁的一种实现方式,好比使用version字段或者修改时间字段来判断数据是都被修改spa

 

参考线程

Mysql 事务及数据的一致性处理htm

https://segmentfault.com/a/1190000012469586

 CAS乐观锁解决并发问题的一次实践

https://www.javazhiyin.com/41189.html

乐观锁与悲观锁——解决并发问题

https://www.cnblogs.com/0201zcr/p/4782283.html
相关文章
相关标签/搜索