为了账号安全,请及时绑定邮箱和手机立即绑定

乐观与悲观锁定

乐观与悲观锁定

守着一只汪 2019-06-14 10:47:54
乐观与悲观锁定我理解乐观和悲观之间的区别。现在谁能向我解释一下我什么时候会用任何一种?这个问题的答案会根据我是否使用存储过程来执行查询而改变吗?但是仅仅为了检查一下,乐观的意思是“读书时不要锁表”,而悲观的意思是“边读边锁表”。
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

当您不期望有很多冲突时,就会使用乐观锁定。进行正常操作所需的成本较低,但如果确实发生冲突,则在事务中止时,您将付出更高的代价来解决冲突。

当预期发生碰撞时,使用悲观锁定。违反同步的事务被简单地阻塞。

要选择适当的锁定机制,您必须估计读写的数量,并相应地进行计划。


查看完整回答
反对 回复 2019-06-14
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

乐观的假设是,当你阅读的时候,什么都不会改变。

悲观的人认为某些东西会因此锁定它。

如果没有必要完美地读取数据,请使用乐观。你可能会读到奇怪的“脏”字-但它不太可能导致死锁等等。

大多数Web应用程序对脏读取都很好-在极少数情况下,数据并不能准确地统计下一个重新加载的数据。

对于确切的数据操作(如许多金融事务),请使用悲观操作。重要的是,数据是准确地读取,没有任何未显示的变化-额外的锁定开销是值得的。

哦,Microsoft SQL Server默认使用页面锁定-基本上就是您正在读取的行和其中任何一方。行锁定更准确,但速度要慢得多。通常值得将事务设置为读已提交或无锁,以避免在读取时出现死锁。


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 496 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信