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;
      乐观锁和他的名字也一样,他在加锁过程中,运行事务进行查看,但不允许进行增删改。
      
     
    两者的优缺点:悲观锁比较安全,但是资费耗费比较大。
           乐观锁性能比较好,但是安全性低,容易死锁。    两者可以分场景使用。

        

  • 相关阅读:
    day23_雷神_git
    day23_雷神_crm-day2
    day21_雷神_django第四天
    day20_雷神_django第三天
    day19_雷神_django第二天
    day18_雷神_django第一天
    day17_雷神_数据库 小全
    day16_雷神_前端04
    awksedgrep 补充
    python 操作MongoDB非关系型数据库
  • 原文地址:https://www.cnblogs.com/java-263/p/10101432.html
Copyright © 2011-2022 走看看