小编Mar*_*ara的帖子

为什么乐观锁比悲观锁快?

如果记录当前正被另一个进程使用,两种形式的锁定都会导致进程等待记录的正确副本。对于悲观锁定,锁定机制来自数据库本身(本地锁定对象),而对于乐观锁定,锁定机制是某种形式的行版本控制,例如时间戳,用于检查记录是否“过时”。

但两者都会导致第二个进程挂起。所以我问:为什么乐观锁定通常被认为比悲观锁定更快/更好?并且,是否存在悲观优于乐观的用例?提前致谢!

rdbms performance locking

9
推荐指数
2
解决办法
2万
查看次数

乐观锁定实际上如何强制重新读取/更新?

乐观锁的理解是,它使用表中每条记录的时间戳来确定记录的“版本”,这样当记录被多个进程同时访问时,每个记录的版本都有一个引用.

然后,当执行更新时,更新时间戳。在提交更新之前,它会第二次读取记录上的时间戳。如果它拥有的时间戳(版本)不再是记录上的时间戳(因为它自第一次读取以来已被更新),则该过程必须重新读取整个记录并将更新应用于它的新版本。

因此,如果我所说的任何内容不正确,请首先为我澄清。但是,假设我在这里或多或少是正确的......

这实际上如何在 RDBMS 中体现出来?这是在应用程序逻辑(SQL 本身)中强制执行的第二次读取/验证还是 DBA 制定的调整参数/配置?

我想我想知道读取时间戳并在时间戳陈旧时执行第二次更新的逻辑来自哪里。所以我问:是应用程序开发人员强制执行乐观锁,还是由 DBA 强制执行?无论哪种方式,如何?提前致谢!

rdbms locking update

1
推荐指数
1
解决办法
279
查看次数

标签 统计

locking ×2

rdbms ×2

performance ×1

update ×1