2012-10-19 23 views
0

我正在構建一個VoIP交換機,我將要使用SQL存儲過程進行插入。 每次更新歷史記錄表時,我都需要更新用戶表「餘額欄」。由於它是一個開關,我可以每秒有數百次更新。 我想知道最好的方式來更新字段與死鎖和出錯的信息。 我將使用MS sql server 2012.一個字段上的SQL Server大容量更新

+0

假設您插入到歷史記錄表中,您可以考慮使用觸發器來更新用戶餘額。 –

回答

1

將用戶表分區爲大小均勻的分區 - SQL 2012允許使用10000個分區。這樣更新分佈在許多分配單位而不是一個分配單位。然後將WITH(ROWLOCK)提示添加到更新查詢中。

要啓動實際更新,您可以使用觸發器。

+0

如果我添加RowLock,並且該字段需要更新非常快,我將無法獲得decklocks – Andrew

+0

死鎖需要兩個鎖資源。大多數情況下,它們是由一個事務內的不同順序訪問兩個表引起的。 - 如果您遵循上述建議,並且在同一交易中不做任何其他事情,那麼您很有可能會很好。但是,如果不知道整個系統,我不能給出明確的答案。 –