Медленная передача данных большого набора результатов - PullRequest
3 голосов
/ 29 июля 2011

У меня большая таблица MySQL с правильными индексами и т. Д. Я выполняю простой запрос select * с удаленной машины и ожидаю большой набор результатов.

Моя проблема в том, что когда я запускаю запрос, набор результатов возвращается с максимальной скоростью передачи данных ~ 300 КБ / с. Я создал ту же таблицу и выполнил тот же запрос на SQLServer Express 2008 R2, и результаты вернулись со скоростью передачи 2 МБ / с (мой предел строки).

Сервером является Windows Server 2008 R2 x64, четырехъядерный процессор, 4 ГБ ОЗУ, а версия MySQL - 5.6.2 m5 64-bit Я попытался отключить выполнение в протоколе связи, но результаты, где то же самое.

Кто-нибудь имеет представление о том, почему это происходит?

- Феодор

1 Ответ

1 голос
/ 12 августа 2011

Возможно, вы сравниваете яблоки с апельсинами.

Я бы запустил SELECT * на сервере MySQL и посмотрел, какую скорость передачи данных вы получаете для локального извлечения данных на сервере - без дополнительного ограничения сети.

Если это тоже медленно - тогда это не ошибка сети.

Когда запускается программа установки MySQL, он спрашивает человека, настраивающего MySQL, какую роль MySQL будет играть на аппаратном обеспечении - то есть, Development Server, Shared Server, Dedicated.

Разница во всем этом заключается в том, сколько памяти MySQL будет стремиться использовать на сервере.

Самый медленный параметр - «Разработка» (используйте наименьшее количество памяти), а самый быстрый - «Выделенный» (попытка использовать много памяти). Вы можете повозиться с файлом my.ini, чтобы изменить объем памяти, выделенный MySQL для себя, и / или Google «my.ini memory» для получения более подробных инструкций.

Память, которую использует MySQL (или нет, в зависимости от обстоятельств), сильно повлияет на производительность.

Сначала проверьте, какова скорость получения данных локально на сервере MySQL. Если это медленно, сеть не проблема - проверьте использование памяти MySQL - в идеале дайте это как можно больше. И, конечно же, если это быстро, то или сеть и / или какая-то часть промежуточного программного обеспечения базы данных (ODBC?) Или инструмент, используемый для отображения данных, работают медленно ...

Еще одна вещь - попробуйте ВЫБРАТЬ * ДВАЖДЫ ... почему? Во второй раз некоторые или все результаты (опять же, в зависимости от памяти) должны быть кэшированы ... во второй раз это должно быть быстрее ...

Кроме того, не забудьте перезапустить MySQL при изменении файла my.ini (и создать резервную копию, прежде чем вносить какие-либо изменения ...)

...