c#应用程序。
我正在对表中的列执行select和update操作。我将它们放在一个单独的事务中,隔离级别设置为Serializable。我这样做是为了实现数据一致性。
但我仍然可以检查多个用户是否能够读取(选择)相同的值,并最终尝试使用相同的值进行更新。
有没有人能建议我如何实现一致性,比如
没有两个用户读取相同的值。
没有用户读取已更新但尚未提交的值。
发布于 2010-07-09 23:54:17
如果你想防止这种情况,那就叫做悲观锁定。你可以用(表|行)锁来做这件事,但是它会毁了你的性能。
“标准”方法是使用乐观并发,并在问题发生后解决问题。
没有两个用户读取相同的值。
您只能通过一次只允许一个连接来确保这一点。
否用户读取已更新但尚未提交的值。
这只需要(更轻的) ReadCommitted隔离级别。
发布于 2010-07-09 23:53:19
我想您指的是Concurrency。如果这是你要问的问题,请查看链接以开始了解它。根据您的后端和您的具体情况,您可能需要做更多的研究。同样,如果这就是您正在寻找的,那么您可能对悲观并发特别感兴趣。
http://en.wikipedia.org/wiki/Concurrency_control
Handling Concurrency Issues in .NET
发布于 2010-07-09 23:54:42
有很多不同的方法可以实现这一点。您可以在您的记录上使用时间戳。在进行更新时,请确保id与应用程序使用记录拉取的时间戳相匹配。
为了避免用户读取未提交的记录,可以在查询中使用sql提示。
https://stackoverflow.com/questions/3214258
复制相似问题