2011-03-19 66 views
1

在我们的数据库中,我们拥有巨大的表格(它最初是在20年前建立的)。我们正在开发它的过程。乐观并发问题和改进解决方案

某些表包含rowversion和乐观并发。我们想知道是否有一种方法可以将rowversion与某些特定列的修改对应起来,但不是全部。在正常情况下,那么生成的T-SQL将非常庞大。

有什么建议吗?

+0

我从事分布式系统的工作,每天增长超过0.5 TB(当涉及到分布式系统负载时,这不完全在那里)。你说的比这更大吗? – 2011-03-19 10:49:37

+0

不,比这少。无论如何,谁在乎Size,我关心的是自动生成的T-SQL的数量,这在我看来是不必要的!喷!你能描述该系统的功能吗?它是否构建了一种HIDROGENIC BOMB或SOMETHING? – 2011-03-19 10:52:06

+0

这是实时搜索的数据挖掘引擎(我成立之前不久就离开了它)。 – 2011-03-19 12:04:40

回答

1

它使用什么方法rowversion用于optimistic locking

标准技巧是在读取行值时读取rowversion。稍后,在更新时,确保数据库中的rowversion与上次看到的rowversion相匹配。如果没有,那么你就知道别人修改行了,你下面:

UPDATE Customers 
SET Firstname = 'Faulty', Lastname = 'Orc', ... 
WHERE CustomerID = 624429 
AND rowversion = @rowversion 

你只需要更新要更新的列。

是不是也许你想要多人独立对同一行进行更改?在这种情况下,不,你不能那样做。