2012-10-26 34 views
2

我在SQL服務器數據庫中有一張表,其中記錄了用戶的最新活動時間。有人可以確認,當多個更新請求同時收到不同的用戶時,SQL Server將自動處理場景。我期望此表上有25-50個併發更新請求,但每個請求都負責更新表中的不同行。我需要額外的連接池等嗎??當收到一個SQL表的多個同時更新請求時會發生什麼?

+0

希望,如果你需要自動增量字段,你正在使用的身份不是有些土生土長的解決方案? –

回答

3

是的,Sql Server將處理這種情況。

這是一個SGDB,它期望像這樣的場景。

當你在Sql中插入/更新/刪除一行時,sql會鎖定表/行/頁面以保證你能夠做你想做的事情。當您完成插入/更新/刪除行時,此鎖將被釋放。

入住這Link

而且introduction-to-locking-in-sql-server

但也有你應該做幾件事:

1 - 確保你會做whatener你要快。由於鎖定問題,如果連接太久,對同一個表的其他請求可能會被鎖定,直到完成並且這可能導致超時。

2 - 始終使用交易。

3 - 確保調整索引的填充因子。在MSDN上檢查Fill Factor

4 - 根據需要調整Isolation level

5 - 擺脫未使用的索引來加速插入/更新。

連接池與您的問題沒有太大關係。連接池是一種避免每次發送請求時都會創建到數據庫的新連接的額外開銷。在C#和其他使用ADO的語言中,這是自動完成的。看看這個:SQL Server Connection Pooling

其它鏈接,可能是有用的:

best-practices-for-inserting-updating-large-amount-of-data-in-sql-2008

Speed Up Insert Performance

+0

謝謝拉斐爾,我正在使用實體框架,它爲我處理交易,更新查詢真的很簡單..'更新表設置col1 ='xyz'其中col2 ='abc'。所以在我的情況下不需要額外的東西?感謝您的好鏈接...真的有幫助.. – binu

+0

你應該罰款他們。不用謝。 –

+0

我不認爲除了我在答案上寫的內容外,你還需要額外的東西。 –

相關問題