我有一個名爲Products的表,它有很多列。避免併發刪除造成死鎖
這是一個用於報告目的的臨時表。這些數據將被多個用戶請求的同時進行處理,以該表(單獨的存儲過程進行DML操作此表)
表結構: 創建表產品 (例如唯一標識符, 插入日期時間, COL1,COL2 ,...)
插入的列將填充GETDATE()以在插入數據時生成。而實例列有newid()值。一個用戶請求將有一個唯一的ID;可能有百萬行。以下是將會同時執行的查詢,這會導致死鎖。請告訴我
查詢1: 「設置事務隔離READUNCOMMITTED 刪除產品(NOLOCK)P其中例如= 'XXXX-XXX-XXX-XX'」
QUERY2: 「設置事務隔離READUNCOMMITTED 刪除P從產品(NOLOCK)其中插入< = DATEADD(HH,-10,GETDATE())」
注:非聚簇索引是在實例列創建。
請告訴我我可以在這種情況下使用哪個鎖。
注意我無法使用主鍵,因爲當我向表中插入1000萬行時(這是一個事務;有20個併發轉換),因此它很耗時間。 報告應該儘快生成。我的過程有多個35個DML語句,大約有15個DELETE語句用於其他列的實例列(從表中DElete where instance = @instance和col1 = @ col1)。
看看這個http://stackoverflow.com/questions/9952137/multi-threading-c-sharp-application-with-sql-server-database-calls/10035988#10035988 – Phil 2013-02-25 18:41:30