当我了解到"乐观锁定"有时提到"乐观并发控制",并没有真正锁定。典型的实现是CAS(比较和交换)。 所以我想知道没有锁定,为什么这仍然被称为"乐观锁定"?有没有历史原因,因为这个术语起源于数据库世界?
答案 0 :(得分:1)
正如您所指出的那样,事务不会对它尝试更新的行/持久对象获取任何锁定。但是,您可能也知道乐观锁定的工作原理是Versiosing。含义...数据库表记录的版本列(如果已设置)将在每次事务更新时递增。此外,尝试更新特定记录的任何交易都需要在检索时将记录的版本号与更新时的记录版本号进行比较。它就像你有一个叫做版本号的密钥(如在Lock-Key中)并试图查看它是否匹配..如果匹配(意味着......记录不是由另一个tx同时更新)并且你更新。如果匹配失败(记录由另一个tx更新......并且您的密钥不再有效)。
因此,版本控制/选项锁定看起来好像您有一个几乎不存在的锁的密钥(称为版本)。锁定的真正含义可以在当前版本的记录无法匹配并且PREVENTS(意味着已锁定)您更新记录的情况下理解。