我正在處理一個正在導入客戶端的CSV文件。 該CSV應該包含一些信息,這些信息將用於在我公司的數據庫的某個表中執行更新。我的C#函數處理文件,查找錯誤,如果沒有發現錯誤,它會發送一堆更新命令(文件通常從50到100000行不等)。 到現在爲止,我在同一個線程中執行更新(逐行執行更新),但取決於文件,它會變慢一點,所以我選擇將所有SQL發送到Azure SQL隊列(這是一種獲取大量「消息」並再次運行數據庫的SQL代碼的服務),因此,客戶端不必等待執行的操作。 它得到了一些快,但仍然需要很長時間(由於對Azure SQL隊列的請求)。所以我注意到將該操作放在單獨的線程中並將所有SQL發送到我的Azure SQL隊列。在單獨的線程中執行長操作是否安全?
雖然我有點擔心。在單獨的線程中執行長操作真的很安全嗎?它可靠嗎?
定義「安全」。您將需要處理處理/報告錯誤,因爲您不能只返回一個數字或錯誤字符串。 –
您熟悉如何在Sql Server上創建臨時表,那麼您可以創建一個可以同時處理所有行的XML批量插入。我現在通過將csv文件轉換爲數據表格,然後將數據上載到數據表中並進行錯誤檢查等操作完成。然後我寫了自己的函數將數據錶轉換爲XML,然後將單個調用轉換爲存儲過程我通過xml和臨時表將大容量插入到單個表中 – MethodMan
使用線程幾乎是不安全的。野獸的性質。但是,如果它是一個簡單的數據庫更新,那很可能不會導致任何問題。如果您可以使用異步操作(以及數據庫提供者,您可能可以),我會走這條路,因爲我認爲您可以更安全地實現用戶響應的目標。 –