据我所知,“乐观锁”有时指的是“乐观并发控制”,但实际上并没有锁。一个典型的实现是CAS (比较并交换)。所以我想知道,为什么在没有锁定的情况下,这仍然被称为“乐观锁定”?这个术语起源于数据库世界,有没有什么历史原因?
发布于 2016-04-26 13:32:57
正如您正确指出的那样,事务不会在它试图更新的行/持久对象上获得任何锁。但是,正如您可能也知道的那样,乐观锁定基于Versiosing原则工作。Meaning...The数据库-表-记录的版本列(如果您设置了它)将在每次事务更新时递增。此外,任何试图更新特定记录的事务都需要将检索时的记录版本号与更新时的记录版本号进行比较。这就像你有一个名为版本号的键(就像Lock键一样),并试图查看它是否matches..if匹配(同时means..the记录不会被另一个tx更新),然后你就更新了。如果匹配失败(记录由另一个tx..and更新,您的密钥将不再有效)。
因此,版本控制/Opt锁定看起来就像您拥有一个用于虚拟不存在的锁的密钥(称为版本)。当您当前版本的记录不匹配并阻止(意味着锁定)您更新记录时,就可以理解锁的真正含义。
https://stackoverflow.com/questions/33679777
复制相似问题