首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >乐观锁还是悲观锁?

乐观锁还是悲观锁?
EN

Stack Overflow用户
提问于 2014-09-24 07:15:56
回答 1查看 121关注 0票数 0

在我的应用程序中,每当我更新DB中的记录时,我都会使用如下查询: udapte set .来自mytable ,其中状态=“normal”

mytable中有一个名为as status的字段,如果插入/删除记录,该字段将以normal/cancel作为值。

现在,当我同时对mytable进行查询时,它工作得很好,并发性正在被处理(有三个人远程访问)。但现在我想知道这是哪种锁?乐观的,悲观的,或者两者都不乐观。

通过control增加了我已经拥有的疑问,因为我没有注册时间戳!

EN

回答 1

Stack Overflow用户

发布于 2014-09-24 07:25:23

在您的场景中,并发性不被处理。User1可以覆盖User2 2的数据,而不会看到或不知道User2 2的更新。

乐观锁定是在记录中使用像RowVersion这样的构造的地方。所发生的是User1获取记录和RowVersion,然后User2在第二时间获得记录。User1更新记录,RowVersion增量为2。User2尝试更新记录,但由于他/她的RowVersion是旧的,所以无法更新。

User1

代码语言:javascript
复制
 UPDATE record
    SET status = 'test', RowVersion = 2
    WHERE RowVersion = 1;

User2

代码语言:javascript
复制
 UPDATE record
    SET status = 'test2', RowVersion = 2
    WHERE RowVersion = 1;

该语句导致零条记录受影响,因为RowVersion更改为2。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26010795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档