今天有个小伙伴问我Mysql什么时候需要使用悲观锁,也就是在执行语句的时候带上For Update。教科书告诉我们,在一些对数据要求严格的,并且有着并发问题的场景。那么,是什么样的场景呢?
我举一个例子,我们在网上买票,从锁定座位到出票其实是一个比较“漫长”的过程,那么就存在这样一个业务场景,可能在我们锁定座位的时候,另外一个事务把这场电影停售了。那么,接下来的事务执行,就可能会出现一些异常。
因为我们在执行购票的时候,虽然也需要查询电影的在售状态,但由于我们只是查询电影的在售状态,所以只能取到该行数据的一个读锁,除非事务级别为串行化,不然别的事务仍然可以对该行数据进行修改。所以,即便我们只是一个读操作,我们仍然希望对该行数据加上一个锁,让别的事务只能读取,而无法修改该行数据,这就是数据库的悲观锁。
我们可以使用Select * for update 这样的姿势来使用这个功能。要注意到,这个不同的使用方法,我们的锁级别是不一样的。
好了,今天的程序员经典面试题,数据库的悲观锁我们就学习到这里。
文章目录 关系数据库 关系数据库简介 关系数据结构及形式化定义 关系 关系模式 ...
微软官方博客于 2 月初再次发布提示,将会在 3 月 9 日停止对经典版 Edge 浏览器...
本文转载自微信公众号「程序员历小冰」,转载本文请联系程序员历小冰公众号。 疫...
php实现微信支付 微信支付文档地址: https://pay.weixin.qq.com/wiki/doc/api/i...
背景 该问题来自某客户,据描述,他们在部署 MySQL 主从复制时,有时候仅在主库...
前言 我们在使用ajax异步的提交多选框得到需要操作的对象的id,这时我们可以把每...
struts json 类型异常返回到js弹框问题解决办法 当struts 框架配置了异常时 例如...
下面是ajax代码和Controller层代码,期初以为是后台程序写错了。 $("#sourcefile...
六、XML展望 任何一项新技术的产生都是有其需求背景的,XML的诞生是在HTML遇到不...
在 2021 年,人们喜欢 Linux 的理由比以往任何时候都多。在这个系列中,我将分享...