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