Sql-Server
每秒多次非同步呼叫 sp 時遇到問題?
這是我的場景,
我有一個 Windows 服務,用於監視消息的數據隊列。如果此服務在隊列中找到一條消息,它將抓取它,做一些工作然後將其發送到 wcf web 服務。
這個 web 服務做了一點處理,最後將消息寫入 SQL 數據庫。
我的問題是這些隊列中可能有數千條消息,這意味著對這個 Web 服務的 1000 次呼叫和 1000 次在多個執行緒上非同步插入的常量數據庫。
像這樣不斷 ping SQL 數據庫是一種好習慣嗎?如果不是,有什麼更好的方法來解決這個問題?此外,我必須添加要求是立即處理這些消息。我考慮過批量插入方法,但這需要在插入之前將所有消息收集到一個列表中,並且這些消息必須在最多 2 秒內出現在表中。
與 SQL-Server 有關的問題部分完全沒問題,即對數據庫進行 1000 次呼叫的 Web 服務本身應該沒有問題。
但與任何 SQL 一樣 - 答案是:這一切都取決於。下面列出了您應該注意的一些依賴項。
- SQL Server 的硬體需要足夠的負載
- 將消息寫入數據庫的查詢需要高效。如果它只是一個插入語句,那麼(可能)沒問題,如果它需要在插入之前查詢數據庫,則需要測試一堆場景(死鎖,競爭條件等)
- 假設您的 Windows 服務是 dotnet,您需要確保打開連接池,(創建連接非常昂貴)