2011-03-19 67 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 

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

是不是也許你想要多人獨立對同一行進行更改?在這種情況下,不,你不能那樣做。