zoukankan      html  css  js  c++  java
  • 多用户同时操作一条Mysql记录问题

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

    关于乐观锁悲观锁

    悲观锁:每次去取数据,很悲观,都觉得会被别人修改,所以在拿数据的时候都会上锁。

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

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

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

    因此每次都不上锁,但是在更新的时候,就会看别人有没有在这期间去更新这个数据,如果有更新就重新获取,再进行判断,一直循环,直到拿到没有被修改过的数据。

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

    参考

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

    https://segmentfault.com/a/1190000012469586
    

     CAS(比较并交换)乐观锁解决并发问题的一次实践

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

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

    https://www.cnblogs.com/0201zcr/p/4782283.html
    

    Spring Boot之乐观锁和悲观锁

    https://blog.csdn.net/qq_42914528/article/details/82148056
    
  • 相关阅读:
    Linux添加系统环境变量
    keras 或 tensorflow 调用GPU报错:Blas GEMM launch failed
    python 安装虚拟环境
    Seq2Seq 到 Attention的演变
    聊天内容处理笔记
    LSTM 详解
    keras 打印模型图
    zip 的对象是不能用索引去取的
    c# 反射获取属性值 TypeUtils
    .iml文件恢复
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/11725080.html
Copyright © 2011-2022 走看看