我在SQL服務器數據庫中有一張表,其中記錄了用戶的最新活動時間。有人可以確認,當多個更新請求同時收到不同的用戶時,SQL Server將自動處理場景。我期望此表上有25-50個併發更新請求,但每個請求都負責更新表中的不同行。我需要額外的連接池等嗎??當收到一個SQL表的多個同時更新請求時會發生什麼?
回答
是的,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
謝謝拉斐爾,我正在使用實體框架,它爲我處理交易,更新查詢真的很簡單..'更新表設置col1 ='xyz'其中col2 ='abc'。所以在我的情況下不需要額外的東西?感謝您的好鏈接...真的有幫助.. – binu
你應該罰款他們。不用謝。 –
我不認爲除了我在答案上寫的內容外,你還需要額外的東西。 –
- 1. SQL Server - 當表中的一行更新時會發生什麼?
- 2. 當我向同一個URL提交2個請求時會發生什麼?
- 3. shell_exec從多個不同的請求運行時會發生什麼情況?
- 4. 當請求超時時,http servlet會發生什麼?
- 5. 當一個事件被觸發並且頁面更新同時發生時會發生什麼?
- 6. 如果2個或更多人試圖同時更新同一個MySQL表,會發生什麼情況?
- 7. 當接收到響應時,Class請求某個WebService的內容不在內存中時會發生什麼?
- 8. 當多個進程嘗試寫入同一個文件時會發生什麼?
- 9. 當您在堆棧中請求更多空間時會發生什麼情況?
- 10. 當我讀/寫同一個文件時會發生什麼?
- 11. 當你同時觸摸兩個按鈕時會發生什麼
- 12. 爲什麼AJAX有時會發送兩個相同的請求
- 13. 在MS SQL Server 2005中,當同一個SP的不同執行訪問臨時表時會發生什麼?
- 14. 當我刷新頁面時,我的收藏會發生什麼?
- 15. 當用戶更新操作系統時,多個APK支持會發生什麼?
- 16. 當接收到位置請求時,LocationSettingsState類會做什麼?
- 17. 當IM發送數據請求時收到一個錯誤的請求
- 18. 同時發生多個請求時的意外連接狀態
- 19. Laravel Api同時收到兩個請求
- 20. 多個同時發出的HTTP請求
- 21. 收到一個錯誤,同時發出請求
- 22. 當在向ASP.NET MVC的AJAX請求中發生網絡請求超時時會發生什麼操作
- 23. 當您爲同一個程序集多次調用Assembly.CreateInstance時會發生什麼?
- 24. 爲什麼Django在同一會話中阻止同時發生的請求?
- 25. 當你產生一個循環時會發生什麼?
- 26. 當兩個開發人員在同一個文件上工作並提交,更新等時會發生什麼
- 27. 當HTTP請求使用不同的瀏覽器頭時會發生什麼?
- 28. 當多個線程嘗試在Winforms中同時使用Invoke更新窗體控件時會發生什麼?
- 29. Hadoop - 當多個進程試圖同時寫入同一個文件時會發生什麼?
- 30. 爲什麼當它應該是「發佈」請求時收到「獲取」請求
希望,如果你需要自動增量字段,你正在使用的身份不是有些土生土長的解決方案? –