Sql-Server

每秒多次非同步呼叫 sp 時遇到問題?

  • August 17, 2021

這是我的場景,

我有一個 Windows 服務,用於監視消息的數據隊列。如果此服務在隊列中找到一條消息,它將抓取它,做一些工作然後將其發送到 wcf web 服務。

這個 web 服務做了一點處理,最後將消息寫入 SQL 數據庫。

我的問題是這些隊列中可能有數千條消息,這意味著對這個 Web 服務的 1000 次呼叫和 1000 次在多個執行緒上非同步插入的常量數據庫。

像這樣不斷 ping SQL 數據庫是一種好習慣嗎?如果不是,有什麼更好的方法來解決這個問題?此外,我必須添加要求是立即處理這些消息。我考慮過批量插入方法,但這需要在插入之前將所有消息收集到一個列表中,並且這些消息必須在最多 2 秒內出現在表中。

與 SQL-Server 有關的問題部分完全沒問題,即對數據庫進行 1000 次呼叫的 Web 服務本身應該沒有問題。

但與任何 SQL 一樣 - 答案是:這一切都取決於。下面列出了您應該注意的一些依賴項。

  1. SQL Server 的硬體需要足夠的負載
  2. 將消息寫入數據庫的查詢需要高效。如果它只是一個插入語句,那麼(可能)沒問題,如果它需要在插入之前查詢數據庫,則需要測試一堆場景(死鎖,競爭條件等)
  3. 假設您的 Windows 服務是 dotnet,您需要確保打開連接池,(創建連接非常昂貴)

引用自:https://dba.stackexchange.com/questions/298072