MySQL悲观锁与乐观锁

悲观锁与乐观锁的区别:

  1. 悲观锁是数据库的层次去加锁的

  2. 乐观锁就是表字段里面加上版本号或者使用字段条件

  3. 悲观锁效率比效率低,最好还是用一些缓存数据库去解决这个问题。但是涉及到钱的我觉得还是悲观锁好。乐观锁的效率要比悲观锁高。

 

悲观锁使用介绍:

  假定MySQL有客户端A与客户端B同时开启事务

  在A里面进行查询数据:SELECT * FROM tb WHERE id = 1 for update;

  由于B端还没有提交事务,A端则会在执行这条SQL语句时锁住(卡住不动),B端结束了事务,A端才会继续执行SQL。

 

乐观锁使用介绍:

  假定我的表里面有个库存字段stock 值是100、版本号字段version 值是0。当前记录id等于1的值是初始化的值。

  那么我在更新他的时候可以这样写:UPDATE tb SET stock = stock - 1, version = version + 1 WHERE id = 1 AND stock = 100 AND version = 0;

  

posted @ 2021-05-09 23:51  齐云海  阅读(389)  评论(0编辑  收藏  举报