zoukankan      html  css  js  c++  java
  • 悲观锁和乐观锁的简单了解

    悲观锁:悲观锁是由数据库提供的,用于防止数据库并发控制造成的异常。

      实现悲观锁:在要进行加锁的事务中的sql语句末加上 for update。

      悲观锁正如他的名字一样,比较悲观,他在加锁过程中,不允许任何事务进行查询或增删改。

    乐观锁:乐观锁是由逻辑思维实现的,也是用于防止并发控制。

        实现乐观锁:需要在数据表中加一个物理列version,还需要在加锁的sql语句加上where条件(根据你的id和version的值进行判断)。 

     SET autocommit=0;
    START TRANSACTION;
    UPDATE stock SET scount=scount-10,
    `version`=`VERSION`+0.1 
    WHERE sid=1 AND `version`=1.1
    SELECT * FROM stock;
    COMMIT;
      乐观锁和他的名字也一样,他在加锁过程中,运行事务进行查看,但不允许进行增删改。
      
     
    两者的优缺点:悲观锁比较安全,但是资费耗费比较大。
           乐观锁性能比较好,但是安全性低,容易死锁。    两者可以分场景使用。

        

  • 相关阅读:
    纸牌游戏
    万圣节派对
    士兵杀敌(三)简单线段树
    百度之星2016资格赛之部分题解
    hdu Simpsons’Hidden Talents(kmp)
    滑梯理论
    PAP认证方式原理和实现
    Google的Protobuf协议分析
    HMac基本介绍
    为Tcl编写C的扩展库
  • 原文地址:https://www.cnblogs.com/java-263/p/10101432.html
Copyright © 2011-2022 走看看