乐观与悲观锁定

乐观与悲观锁定

我理解乐观和悲观之间的区别。现在谁能向我解释一下我什么时候会用任何一种?

这个问题的答案会根据我是否使用存储过程来执行查询而改变吗?

但是仅仅为了检查一下,乐观的意思是“读书时不要锁表”,而悲观的意思是“边读边锁表”。


守着一只汪
浏览 497回答 3
3回答

白猪掌柜的

当您不期望有很多冲突时,就会使用乐观锁定。进行正常操作所需的成本较低,但如果确实发生冲突,则在事务中止时,您将付出更高的代价来解决冲突。当预期发生碰撞时,使用悲观锁定。违反同步的事务被简单地阻塞。要选择适当的锁定机制,您必须估计读写的数量,并相应地进行计划。

翻翻过去那场雪

乐观的假设是,当你阅读的时候,什么都不会改变。悲观的人认为某些东西会因此锁定它。如果没有必要完美地读取数据,请使用乐观。你可能会读到奇怪的“脏”字-但它不太可能导致死锁等等。大多数Web应用程序对脏读取都很好-在极少数情况下,数据并不能准确地统计下一个重新加载的数据。对于确切的数据操作(如许多金融事务),请使用悲观操作。重要的是,数据是准确地读取,没有任何未显示的变化-额外的锁定开销是值得的。哦,Microsoft SQL Server默认使用页面锁定-基本上就是您正在读取的行和其中任何一方。行锁定更准确,但速度要慢得多。通常值得将事务设置为读已提交或无锁,以避免在读取时出现死锁。
打开App,查看更多内容
随时随地看视频慕课网APP