2009-02-14 21 views
1

我有一個功能,我們需要合併用戶記錄。用戶選擇一個用戶保留和丟棄一個用戶。什麼時候應該關注交易規模?

我們已經在我們的數據庫中59個關係到用戶的記錄,以便爲每一個我需要做的:

UPDATE (Table) set UserNo=(userToKeep) WHERE UserNo=(userToDiscard)

,然後刪除userToDiscard和他們的用戶偏好設置(118)。

我應該擔心交易大小嗎?這是MS-SQL 2005.

有什麼我可以做的嗎?

謝謝

+0

你有沒有考慮過代用鑰匙? – 2009-02-14 12:43:16

回答

3

您是否測試過程實際需要多長時間?用戶合併的頻率如何?

如果你在每個表中都有用戶ID的索引(並且我認爲這將是自然而然的事情),那麼即使有59個表,執行這些更新和刪除也不應該花太長的時間。如果你實際上只是每週多次合併用戶,那麼像這樣的小點不應該成爲問題。在最壞的情況下,有人必須等待幾秒鐘才能每週做一次或兩次。

另一種選擇是將這些用戶合併請求保存在表中,並在夜間進程中進行實際工作(或者每當「非工作時間」用於您的應用程序時)。您需要嚮應用程序的用戶清楚,但合併不會立即生效。您還需要考慮很多可能的情況:如果同一個用戶設置爲與當晚的兩個不同用戶合併,該怎麼辦等等。

0

這取決於你的用戶表有多大,以及你有什麼指數。

0

合併用戶聽起來不像是經常使用的功能。鑑於此,有98%的概率不應該擔心事務大小(爲可能的死鎖保留2%)

0

通常事務應該是他們需要的最小大小,以最大限度地減少爭用和可能的死鎖情況。 (儘管將它們設置得太小也會導致開銷)如果某些行先被更改,其他行會被更改,那麼違背這些表的查詢會產生不正確的結果嗎?根據您的應用程序,這可能會導致業務問題。

是否知道每個表中將更新多少行?如果每個用戶在一個表中可能有數百萬行,那麼您可能需要比每個表中有少數幾行更加謹慎。

相關問題