使用以下方案時,會考慮哪些最佳實踐?在C#中創建數據子集時的最佳實踐
我有〜的數據集600萬條共,分解成30+表與具有幾十萬條記錄一些表。我需要使用一次只允許插入200條記錄的api。
我打破了表插入。現在,我正在考慮前兩個選項。我可以獲取該表的完整數據集,然後在C#循環中通過數據集,一次只插入200個數據集。或者我可以一次抓取200條記錄的多個數據庫調用。創建我的對象並調用API來插入我的記錄。我想我可以在插入其他記錄時進行下一次數據庫調用。
使用以下方案時,會考慮哪些最佳實踐?在C#中創建數據子集時的最佳實踐
我有〜的數據集600萬條共,分解成30+表與具有幾十萬條記錄一些表。我需要使用一次只允許插入200條記錄的api。
我打破了表插入。現在,我正在考慮前兩個選項。我可以獲取該表的完整數據集,然後在C#循環中通過數據集,一次只插入200個數據集。或者我可以一次抓取200條記錄的多個數據庫調用。創建我的對象並調用API來插入我的記錄。我想我可以在插入其他記錄時進行下一次數據庫調用。
使用多個線程,每次讀取並一次插入200個線程。這不僅會更快,而且由於無法在片段化內存上分配連續塊,因此您不會遇到潛在的數據集OutOfMemoryExceptions。
如果這些表是完全獨立的,可以分而治之的這一點,並在不同的線程不同的表做多個插入一次。但是如果沒有看到所有的模式,真的很難說。如果您需要插入600萬行並一次執行200次並分別調用數據庫,那將會有30,000個不同的調用,這對我來說似乎過分了。 – Michael
您可以將DataAdapter的['UpdateBatchSize'](http://msdn.microsoft.com/zh-cn/library/system.data.common.dbdataadapter.updatebatchsize(v = vs.110).aspx)設置爲200。 –
你爲什麼從C#調用數據庫,然後將很多行插回到數據庫中?這可以完成所有從SQL內或可能使用SSIS,或有一個用戶界面組件? – d89761