MySqlDataReader.Read() "Тайм-аут" при чтении из очень большой таблицы (более 100 миллионов записей)

У меня есть большая таблица, которая содержит около 100 миллионов записей в MySQL. Я хочу прочитать все записи и обработать их в моей программе на C#/.NET, поэтому я написал такой код:

string sql = "SELECT * FROM the_table";
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
//...
}

Но после запуска в течение 3 минут возникает проблема тайм-аута.Это ошибка вывода

Если я изменю оператор SQL, чтобы использовать "предел":

string sql = "SELECT * FROM the_table limit 60000000" //60 million

тогда это работает хорошо. (петля while (rdr.Read()) заняло около 3,8 минуты)

Был ли тайм-аут вызван слишком большим столом?

Что здесь происходит и как мне решить проблему?

2 ответа

ОК, я наконец-то локализовал проблему! Это потому, что я использовал " " драйвер ADO.NET для MySQL (Connector/Net), который был разработан MySQL. И могут быть некоторые ошибки. Затем я перехожу на использование dotConnect, проблема исчезла. Спасибо за помощь.

Я установил тайм-аут команды на более высокое значение, и это устранило проблему.

 MySqlCommand mySqlCommand = new MySqlCommand(sql_cmd);
 mySqlCommand.Connection = _connection;
 mySqlCommand.CommandTimeout = 3600;

Надеюсь это поможет

Другие вопросы по тегам