kuin

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

悲观锁和乐观锁的区别

悲观锁

悲观锁认为数据在处理过程中的任何时候都有可能出现冲突,因此在数据读取时就对其进行锁定,防止其他事务进行修改,直到完成读取或修改后才释放锁

在关系型数据库中,通常通过使用数据库的事务和锁的机制实现悲观并发控制,例如使用SELECT FOR UPDATE语句在读取记录时加上锁,这样其他事务就不能修改这些数据。这种方式简单直接,容易理解和实现,但在高并发环境下会产生大量的锁争用,影响性能。

乐观锁

乐观锁则认为数据在大部分情况下不会发生冲突,因此先进行操作,但在更新的时候检查数据是否发生了变化。如果数据没有变化,则操作成功;如果数据已经变化,则根据预定的策略处理冲突。

通常通过使用数据版本号或时间戳来实现乐观并发控制。例如,可以在记录中加入一个版本号字段,每次更新时都将版本号加一,当读取记录时会记录下版本号,在更新时检查版本号是否发生变化,如果没有变化则进行更新,否则认为发生了冲突。

乐观锁适合于冲突较少的场景,可以减少锁的使用,提高并发性能。

总的来说,悲观锁适用于冲突较多,且需要精确控制事务的场景,而乐观锁适用于冲突较少,且对性能要求较高的场景。

posted on   摆烂撞南墙  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
 
点击右上角即可分享
微信分享提示