Выполнение хранимых процедур MySQL из приложения C # с использованием MySqlConnector происходит медленно?

#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. Я не указывал в первом сообщении, но у меня есть тайминги, как вы сказали!