2012-07-11 27 views
2

我在並行線程中使用SqlBulkCopy插入數據到表中。互聯網上的各種鏈接表示TableLock是使用SqlBulkCopy的一個很好的選擇。我應該使用表鎖,而插入數據使用多線程SqlBulkCopy

數據龐大且連續。

RowLock會在多線程中提供更好的性能嗎?我很困惑一個線程完成插入所花的時間會導致等待其他線程等待,如果啓用了表鎖,而行鎖定不應該對插入產生任何影響。

+0

誰是'they'? – MatBailie 2012-07-11 13:02:32

+0

@Dems我修改了我的問題 – 2012-07-11 13:30:13

+1

我不確定你可以通過並行使用'SqlBulkCopy'獲得更好的性能。假設'SqlBulkCopy'消除了大部分的CPU開銷,剩下的瓶頸就是I/O,它不容易從並行化中受益。 – 2012-07-11 14:31:44

回答

1

批量更新表鎖被設計爲允許併發的數據加載 - 所以他們應該給不是按照行的基礎上連續獲取鎖性能更好

http://msdn.microsoft.com/en-us/library/aa213039(v=sql.80).aspx

+0

多數民衆贊成在偉大的信息,我想它是爲SQL大容量inser,它是類似的ADO.Net SqlBulkCopy。 – 2012-07-11 14:39:10

+0

是 - 請參閱http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlbulkcopyoptions.aspx「TableLock:在批量複製操作期間獲取批量更新鎖定。未指定時,行鎖被使用。「 – podiluska 2012-07-11 14:41:44

相關問題