使用以下方案时,会考虑哪些最佳实践?在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