1

在并发中,在乐观并发中,控制并发的方式是使用时间戳字段。但是,在我的特定情况下,并非所有字段都需要在并发方面进行控制。

例如,我有一个产品表,其中包含库存数量。该表具有描述、代码等字段。对我来说,一个用户修改这些字段不是问题,但我必须控制其他用户是否更改库存。

因此,如果我使用时间戳并且一个用户更改了描述,而另一个用户更改了库存数量,那么第二个用户将获得异常。

但是,如果我使用字段 stock 而不是并发异常,那么第一个用户可以更新信息,第二个用户可以毫无问题地更新 stock。

使用股票字段来控制并发性是一个很好的解决方案,还是总是使用时间戳字段更好?

并且如果以后我需要添加一个新的重要字段,那么我需要使用两个字段来控制股票和新的并发吗?它在性能方面的成本很高吗?

4

1 回答 1

2

考虑乐观并发的定义:

在关系数据库管理系统领域,乐观并发控制(OCC)是一种并发控制方法,它假设多个事务可以在不相互影响的情况下完成,因此事务可以在不锁定它们影响的数据资源的情况下继续进行。(维基百科

显然,这个定义是抽象的,为您的具体实现留下了很大的空间。

让我给你举个例子。几年前,我和一群同事评估了同样的事情,我们意识到在我们的应用程序中,在某些表上,并发性可以简单地基于用户正在更新的字段。

所以,换句话说,只要他们正在更新的字段在他们收集行后没有改变,我们就让他们更新行,因为其余的字段真的无关紧要并且行会得到无论如何都会在 udpate 上刷新,这样他们就可以得到其他用户的最新更改。

所以,简而言之,我会说你正在做的事情很好,并没有任何硬性规定。这真的取决于你需要什么。如果你需要它更灵活,就像你在说的那样,那就让它更灵活——简单。

于 2012-12-08T12:38:22.980 回答