Я запускаю очень простую функцию, которая читает строки из текстового файла партиями. Каждая строка содержит запрос sql, поэтому функция захватывает указанное количество запросов, выполняет их в базе данных SQL, а затем захватывает следующий пакет запросов, пока не будет прочитан весь файл. Проблема в том, что со временем с очень большими файлами процесс начинает значительно замедляться. Я предполагаю, что где-то в функции есть утечка памяти, но не могу определить, где она может быть. Пока эта функция работает, больше ничего не происходит. Мои навыки программирования в лучшем случае грубые, так что, пожалуйста, go полегче со мной. :)
for (int x = 0; x<= totalBatchesInt; x++)
{
var lines = System.IO.File.ReadLines(file).Skip(skipCount).Take(batchSize).ToArray();
string test = string.Join("\n", lines);
SqlCommand cmd = new SqlCommand(test.ToString());
try
{
var rowsEffected = qm.ExecuteNonQuery(CommandType.Text, cmd.CommandText, 6000, true);
totalRowsEffected = totalRowsEffected + rowsEffected;
globalRecordCounter = globalRecordCounter + rowsEffected;
fileRecordCounter = fileRecordCounter + rowsEffected;
skipCount = skipCount + batchSize;
TraceSource.TraceEvent(TraceEventType.Information, (int)ProcessEvents.Starting, "Rows
progress for " + folderName + "_" + fileName + " : " + fileRecordCounter.ToString() + "
of " + linesCount + " records");
}
catch (Exception esql)
{
TraceSource.TraceEvent(TraceEventType.Information, (int)ProcessEvents.Cancelling, "Error
processing file " + folderName + "_" + fileName + " : " + esql.Message.ToString() + ".
Aborting file read");
}
}