首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保证数据一致性

如何保证数据一致性
EN

Stack Overflow用户
提问于 2010-07-09 23:45:51
回答 6查看 1.2K关注 0票数 1

c#应用程序。

我正在对表中的列执行select和update操作。我将它们放在一个单独的事务中,隔离级别设置为Serializable。我这样做是为了实现数据一致性。

但我仍然可以检查多个用户是否能够读取(选择)相同的值,并最终尝试使用相同的值进行更新。

有没有人能建议我如何实现一致性,比如

没有两个用户读取相同的值。

没有用户读取已更新但尚未提交的值。

EN

回答 6

Stack Overflow用户

发布于 2010-07-09 23:54:17

如果你想防止这种情况,那就叫做悲观锁定。你可以用(表|行)锁来做这件事,但是它会毁了你的性能。

“标准”方法是使用乐观并发,并在问题发生后解决问题。

没有两个用户读取相同的值。

您只能通过一次只允许一个连接来确保这一点。

否用户读取已更新但尚未提交的值。

这只需要(更轻的) ReadCommitted隔离级别。

票数 2
EN

Stack Overflow用户

发布于 2010-07-09 23:53:19

我想您指的是Concurrency。如果这是你要问的问题,请查看链接以开始了解它。根据您的后端和您的具体情况,您可能需要做更多的研究。同样,如果这就是您正在寻找的,那么您可能对悲观并发特别感兴趣。

http://en.wikipedia.org/wiki/Concurrency_control

Handling Concurrency Issues in .NET

票数 1
EN

Stack Overflow用户

发布于 2010-07-09 23:54:42

有很多不同的方法可以实现这一点。您可以在您的记录上使用时间戳。在进行更新时,请确保id与应用程序使用记录拉取的时间戳相匹配。

为了避免用户读取未提交的记录,可以在查询中使用sql提示。

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

https://stackoverflow.com/questions/3214258

复制
相关文章

相似问题

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