У нас есть небольшой инструмент C#, который мы собрали вместе, чтобы проанализировать файл данных, создать некоторые объекты и вставить их в БД.Использование LINQ2SQL для вставки большого количества записей
Логика по существу.
string [] lines = File.ReadAllLines("C:\\Temp\\Data.dat")
foreach(string line in lines)
{
MyDataObject obj = ParseObject(line);
myDataContext.MyDataObjects.InsertOnSubmit(obj);
}
myDataContext.SubmitChanges();
Это было хорошо с самого начала, как файл данных был длиной всего ~ 1000 строк каждый день , но в последнее время этот файл вырос до ~ 30000 строк и процесс стал мучительно медленным.
Все до SubmitChanges()
звонок прекрасен, но как только он начинает процесс сброса 30 000 вставок в БД, он просто останавливается. В качестве теста я фикционировал 30 000 заявлений вставки и запускал их непосредственно из QA. Это заняло примерно 8 минут.
Спустя 8 минут версия C#/Linq выполнила только около 25% вставок.
У кого-нибудь есть предложения, как я могу оптимизировать это?
Cheers Marc, пошли по этому маршруту, создав DataTable в памяти и передав его объекту BulkCopy. это не плоский CSV, к сожалению, и ему необходимо много манипулировать, прежде чем вставлять его на сервер. Спасибо –