软件测试面试题:什么是悲观锁

150 篇文章 0 订阅
60 篇文章 1 订阅

悲观锁

悲观锁(Pessimistic Locking)的基本思想是假设并发操作之间会发生冲突,因此会对数据进行加锁,阻塞其他操作。

在数据更新时,悲观锁会先获取锁,然后执行更新操作,其他操作需要等待锁的释放才能继续执行。

悲观锁优点

悲观锁的优点是可以保证数据的一致性,因为在更新操作期间其他操作无法修改数据。

悲观锁缺点

(1)性能问题

悲观锁会阻塞其他操作,会降低系统的并发性能。如果操作过程中需要等待锁的释放,会增加操作的响应时间,影响用户体验。

(2)死锁问题

悲观锁可能会出现死锁问题,即多个线程相互等待对方释放锁导致无法继续执行。

(3)锁粒度问题

悲观锁的锁粒度较大,可能会导致部分数据无法并发操作,影响系统的并发性能。

(4)编程复杂度高

在使用悲观锁时,需要进行锁的加锁和释放操作,需要处理锁的粒度、超时等问题,编程复杂度较高。

悲观锁使用场景

(1)并发量高

悲观锁适合在并发量较高的场景下使用,因为它可以保证数据的一致性。

(2)多写少读

悲观锁适合在多写少读的场景下使用,因为读操作需要等待写操作释放锁才能进行。

(3)数据冲突概率高

悲观锁适合在数据冲突概率较高的场景下使用,即并发操作之间很可能发生冲突。

(4)悲观锁的实现机制

悲观锁通常是通过数据库行级锁或者分布式锁来实现的。在更新数据时,会对数据进行加锁,其他操作需要等待锁的释放才能继续执行。

悲观锁实现方式

(1)数据库行级锁

数据库提供了行级锁的机制,可以在事务中对数据行进行加锁。

通过在事务中使用SELECT ... FOR UPDATE语句,可以获取对数据行的悲观锁,其他事务需要等待锁的释放才能进行操作。

(2)分布式锁

在分布式系统中,可以使用分布式锁来实现悲观锁。

分布式锁的实现方式有很多种,如基于数据库、基于缓存、基于ZooKeeper等。通过获取分布式锁,可以保证在分布式环境下对数据的悲观锁定。

(3)悲观读取

在读取数据时,直接使用悲观锁来锁定数据,其他操作需要等待锁的释放才能进行。这种方式适用于多写少读的场景,以保证数据的一致性。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值