【面试干货】数据库乐观锁,悲观锁的区别,怎么实现

【面试干货】数据库乐观锁,悲观锁的区别,怎么实现

  • 1、乐观锁,悲观锁的区别
  • 2、总结


💖The Begin💖点点关注,收藏不迷路💖

1、乐观锁,悲观锁的区别

  1. 悲观锁(Pessimistic Lock)

    定义: 每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞挂起直到它拿到锁

    实现: 传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁,读锁,写锁等,都是在做操作之前先上锁

    特点: 适用于写操作频繁的场景,但可能会降低并发性能,因为上锁会阻塞其他操作的进行。

示例代码(伪代码):

-- 悲观锁示例(以行锁为例)  
SELECT * FROM table_name WHERE id = 1 FOR UPDATE;  -- 对id为1的行加锁
  1. 乐观锁(Optimistic Lock)

    定义: 每次去拿数据的时候都认为别人不会修改数据,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据

    实现版本号机制 (如:为数据表增加一个版本号字段,在更新数据时判断版本号是否变化)或者时间戳机制(使用数据的最后更新时间戳,在更新时判断时间戳是否发生变化)是常见的乐观锁实现方式。

    特点: 适用于多读少写的场景,可以提高系统的整体吞吐量。但如果冲突频繁,上层应用会不断重试,降低性能。

示例代码(伪代码):

-- 乐观锁示例(以版本号为例)  
UPDATE table_name SET column1 = value1, version = version + 1 WHERE id = 1 AND versio

old_version 是之前读取到的版本号,如果更新操作影响的行数为0,则表示在此期间有其他事务已经修改了数据,需要重试。

2、总结

选择:

1、根据实际应用场景选择使用悲观锁还是乐观锁。 如果写操作较少,且希望提高系统吞吐量,可以考虑使用乐观锁;

2、如果写操作频繁,且希望减少数据冲突可以考虑使用悲观锁

注意: 在使用乐观锁时,需要合理设置重试次数和重试间隔,避免频繁重试导致性能下降。同时,需要确保在更新数据时能够正确判断数据是否被其他事务修改过。

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/642835.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Spring 当中存在的八大模式

在Spring 当中存在的八大模式 文章目录 在Spring 当中存在的八大模式每博一文案1. 简单工厂模式2. 工厂方法模式3. 单例模式4. 代理模式5. 装饰器模式6. 观察者模式7. 策略模式8. 模板方法模式最后: 每博一文案 我认为 “知世故而不世故” 才是真正意义上的成熟。回…

又有人叫嚣:AI取代前端,来给你几张图,看能不能憋死AI。

总有自媒体人,为了些许流量,在大放厥词,说截个图给AI,AI就能输出前端代码,这是啥都敢说,吹牛不上税。 我来给你几张贝格前端工场日常接的大数据项目相关的图,你让AI生成代码,取代前…

fastapi中实现多个路由请求

大家伙,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 最近在写机器人相关的接口,顺手学了学python,发现这是个好东西,写代码效率比java要高很多,比如写个词云呀,写个回调呀&am…

【C++】详解AVL树——平衡二叉搜索树

个人主页:东洛的克莱斯韦克-CSDN博客 祝福语:愿你拥抱自由的风 目录 二叉搜索树 AVL树概述 平衡因子 旋转情况分类 左单旋 右单旋 左右双旋 右左双旋 AVL树节点设计 AVL树设计 详解单旋 左单旋 右单旋 详解双旋 左右双旋 平衡因子情况如…

GAW-1000D 微机控制钢绞线拉力试验机

一、整机外观图与示意图 外观示意图 性能说明: GAW-1000D型微机控制电液伺服钢绞线拉力试验机主要用于对预应力钢绞线进行抗拉强度测试。由宽调速范围的电液比例伺服阀与计算机及测控单元所组成伺服控制系统,能精确的控制和测量试验全过程。整机由主机…

使用kubesphere部署微服务的时候,节点的镜像不是最新的导致部署到旧版本问题

我使用kubesphere部署微服务的时候,发现有很多次,我修改了配置文件,但是部署完才发现部署的是旧版本。 然后我查看了该微服务部署在哪个节点上: kubectl get pods --all-namespaces -o wide例如 gulimall-gateway 这个服务&…

【会议征稿,IEEE出版】第九届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2024,6月28-30)

第九届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2024)将于2024年6月28-30日在中国绵阳举行。 ISCTT 2024将围绕 “信息科学”、"计算机技术”、“交通运输” 等最新研究领域,为来自国内外高等院校、科学研究所、企事业单位的专…

【C语言】C语言-设备管理系统(源码+数据文件)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

转运机器人负载最高可达 1000kg,重复精度高达±5mm

转运机器人,内部搭载ICD系列核心控制器,拥有不同的移载平台,负载最高可达 1000kg;重复精度高达5mm;支持 Wi-Fi漫游,实现更稳健的网络数据交互;无轨化激光 SLAM 导航,配合 3D 避障相机等多传感器进行安全防护。转运器人…

【机器学习】大模型在机器学习中的应用:从深度学习到生成式人工智能的演进

🔒文章目录: 💥1.引言 ☔2.大模型概述 🚲3.大模型在深度学习中的应用 🛴4.大模型在生成式人工智能中的应用 👊5.大模型的挑战与未来展望 💥1.引言 随着数据量的爆炸性增长和计算能力的提…

aws sqs基础概念和队列参数解析

分布式队列的组成部分 生产者,向队列发送消息的组件消费者,接受队列消息队列,多个sqs服务器存储冗余存储消息 sqs自动删除超过最大留存时间的消息(默认4天),可以通过SetQueueAttributes调整为&#xff08…

使用 Django Admin 进行高效的后台管理

文章目录 创建超级用户注册模型到 Admin 后台自定义 Admin 后台界面定制 Admin Actions结语 当使用 Django Admin 进行后台管理时,开发者可以通过简单的配置和定制来满足项目的需求。可以根据不同的模型和数据结构,轻松地创建和管理数据条目、进行搜索和…

【完整解析】2024电工杯数学建模A题论文与代码

园区微电网风光储协调优化配置 1 论文2 代码分享2.1 第三题第一问 3 数据与代码 1 论文 2 代码分享 2.1 第三题第一问 function anssq3w1ObjFun(ttt,id); %ttttt(1); tt[750,0,0,1000,600,500]; limttt(1)*200; limmttt(2)*500*0.9-ttt(2)*500*0.1; t1ttt(3)*1000;t2ttt(4)*1…

非整数倍数据位宽转换24to128

描述 实现数据位宽转换电路,实现24bit数据输入转换为128bit数据输出。其中,先到的数据应置于输出的高bit位。 电路的接口如下图所示。valid_in用来指示数据输入data_in的有效性,valid_out用来指示数据输出data_out的有效性;clk是时…

案例分享|Alluxio在自动驾驶模型训练中的应用与部署

分享嘉宾: 杨林三-辉羲智能 关于辉羲智能: 辉羲智能致力打造创新车载智能计算平台,提供高阶智能驾驶芯片、易用开放工具链及全栈自动驾驶解决方案,运用独创性“数据闭环定义芯片”方法学,助力车企构建低成本、大规模和…

Linux网络编程:HTTP协议

前言: 我们知道OSI模型上层分为应用层、会话层和表示层,我们接下来要讲的是主流的应用层协议HTTP,为什么需要这个协议呢,因为在应用层由于操作系统的不同、开发人员使用的语言类型不同,当我们在传输结构化数据时&…

NXP i.MX8系列平台开发讲解 - 3.12 Linux 之Audio子系统(一)

专栏文章目录传送门:返回专栏目录 目录 1. Audio 基础介绍 1.1 音频信号 1.2 音频的处理过程 1.3 音频硬件接口 1.3 音频专业术语解释 2. Linux Audio子系统介绍 3. Linux Audio子系统框架 Linux嵌入式系统中的音频子系统扮演着至关重要的角色,它涉…

【PROXYCHAINS】Kali Linux 上配置NAT PROXYCHAINS保姆级教程

kali linux配置agent 在博主配置kali 的时候遇到了一些小问题,主要就是连接一直报错超时。 方法一:优点:免费,但是agent很不稳定 搜索免费ip,在Google搜索free proxy list 检查可用ip 连接成功 cd /etcls |grep redsnano reds…

指北者智能音乐学习机隆重亮相广州国际乐器展

2024年5月23-26日广州国际乐器展览会在广交会展馆B区隆重开幕,本届展会开设5大展厅、50000平方米的主题展区,吸引了700多家国内外参展商参展,打造集展示、商贸、文化交流、文娱于一体的广阔平台。深圳市指北科技有限公司也携旗下品牌指北者智…

常见算法(3)

1.Arrays 它是一个工具类,主要掌握的其中一个方法是srot(数组,排序规则)。 o1-o2是升序排列,o2-o1是降序排列。 package test02; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparat…