数据库-锁

本文介绍了数据库锁的基本概念,重点探讨了乐观锁和悲观锁的原理、异同及优缺点。乐观锁在提交数据时通过版本号验证数据是否被修改,而悲观锁则一开始就对数据上锁,确保数据的一致性。文章还提到了行锁中的共享锁和排他锁,以及避免死锁的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

数据库的锁机制还是比较复杂的,不同的锁适合应用在不同的场所,正在看这一类的文章,来边学习边总结一下。


一、数据库锁是什么?

我认为,数据库的锁是用来解决数据的并发访问和处理的并发性和一致性问题的。我们常挂在嘴边的锁有行级锁、页级锁和表级锁,这几个都是悲观锁,数据库另外一个就是与之对应的乐观锁。下面是一张锁的分级图。
在这里插入图片描述

二、乐观锁和悲观锁

1.乐观锁

乐观锁总是认为别人不会修改数据,总不会发生并发问题,所以在处理数据的时候没有上锁,只有在线程提交数据时会通过检查版本号的形式检测数据有没有被修改过。 一般会在数据表中添加版本号(Version)字段来表示被修改的次数,当数据被修改,version+1,只有在version字段和当前数据库的version值相同时,才提交成功。

2.悲观锁

悲观锁认为别的线程总是会对要处理的这个数据进行修改,所以每次都会对数据进行上锁,一次值允许一个线程对数据进行处理,其

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值