悲观锁和乐观锁的简单了解

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

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

    

原文地址:https://www.cnblogs.com/java-263/p/10101432.html