悲观锁

悲观锁

读锁/共享锁(少用)

读锁可被其他线程所共享,所有线程都可以读取到数据

打开一个cmd窗口,连接数据库,开启事务, 使用读锁(lock in share mode)查询表,不提交事务
此时 该表加上了读锁
在这里插入图片描述

新打开一个cmd窗口,连接相同数据库,开启事务,查询相同的表
在这里插入图片描述

此时 该表的读锁被第二个窗口的查询语句取走 第一个查询语句的锁已不在
尝试在第一个窗口update数据 无法执行成功 会一直等待直到超时
在这里插入图片描述

将第二个窗口的事务提交后锁消失 此时再次在第一个窗口执行更行语句 执行成功;
在这里插入图片描述在这里插入图片描述

写锁/排他锁(用的多)

写锁不能共享,只要有人为数据加入了写锁,其他人就不能为数据加任何锁

在第一个窗中开启事务 使用写锁查询表 不提交事务
在这里插入图片描述

在第二个窗口开启事务 使用写锁查询表 不会执行成功 直至等待超时
锁并没有移交到第二个查询窗口
在这里插入图片描述

此时 将第一个窗口的事务提交,再次再第二个窗口执行更新语句 执行成功
在这里插入图片描述
在这里插入图片描述

注:
给表添加写锁,其他线程无法读取这个锁,当加锁事务提交后才能读取该表;所以一般都会锁行 锁行后该行无法加锁 无法更新
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值