#c# #mysql
#c# #mysql
Вопрос:
У меня есть хранимая процедура в MySQL, которая вставляет 10.000 регистров. Когда я выполняю его из командной строки MySQL, запрос занимает 1 секунду, но когда я делаю это из приложения .NET C #, которое я написал, это занимает около 8 секунд.
У вас есть подсказка о том, что происходит?
-
Версия сервера MySQL 5.5.16
-
А также для выполнения теста я попробовал некоторую версию Mysql.Сетевой соединитель, но я получаю те же результаты.
-
Я выполнил консольное приложение на двух разных компьютерах с 32 и 64 битами.
C # code:
string connStr = "ommited";
MySqlConnection conn = MySqlConnection(connStr);
MySqlCommand micomando = new MySqlCommand("CALL my_procedure();", conn);
micomando.Connection.Open();
micomando.ExecuteNonQuery();
ArrayList recordSet = new ArrayList();
conn.Close();
Заранее благодарю вас!
Комментарии:
1. Вы уверены, что выполняете вызов только 10000 раз, а не какой-то дополнительный код, такой как открытие / закрытие соединения? Эти операции действительно медленные.
2. Я уверен. Я извлек тайминги открытия / закрытия соединения из своего мониторинга, потому что это было первое, о чем я заподозрил
Ответ №1:
Время совместной работы ExecuteNonQuery
и время выполнения командной строки MySQL.
Stopwatch sw = Stopwatch.StartNew();
micomando.ExecuteNonQuery();
sw.Stop();
Console.WriteLine("Time taken: {0}ms", sw.Elapsed.TotalMilliseconds);
Выполнение запроса — не единственная задача, выполняемая программой .net.
Комментарии:
1. Я не указывал в первом сообщении, но у меня есть тайминги, как вы сказали!