Задать вопрос
@BorisKorobkov
Web developer

Почему MySQL в виртуалке работает на порядок быстрее, чем на чистой ОС?

Один и тот же SQL-запрос в чистой Ubuntu работает в 10 раз медленнее, чем на том же самом компе в виртуалке Ubuntu внутри Windows. Как выяснить проблему?

Комп один и тот же: Intel Core i5-2500, 4 ядра, оперативная памяти 8Гб, жесткий диск Seagate 500Gb SATA.
SQL-запросы одни и те же: разворачивание БД для запуска тестов, порядка 100 таблиц, в каждой в среднем по 10 полей и 10 записей.

Тест 1. Полное форматирование, установка с нуля Ubuntu 17.04 64-bit, файловая система ext4, один раздел без своппинга. MySQL 5.7. Все настройки по-умолчанию.
БД разворачивается примерно за 1 минуту. Отдельный запрос "alter table add column..." выполняется за 0.5 сек.
ОС и все запущенные приложения занимают 4Гб, во время теста тоже. Ядра процессора обычно заняты на 20-30%, во время теста на 30-40%.

Тест 2. Тот же самый комп. Полное форматирование, установка с нуля Windows 7, файловая система NTFS. В ней Virtualbox с выделением 4 Гб, в нем Ubuntu и все прочее из п.1 с теми же самыми настройками.
БД в Ubunte разворачивается примерно за 5 секунд. Отдельный запрос "alter table add column..." выполняется за 0.05 сек.
ОС и все запущенные приложения занимают 6Гб, во время теста тоже. Ядра процессора обычно заняты на 40-50%, во время теста на 50-60%.

Вывод: внутри виртуалки то же самое работает на порядок быстрее, чем на чистой ОС. Нелогично.
Может, Virtualbox всю виртуалку держит по возможности в оперативной памяти?
Тогда что надо подкрутить, чтобы конкретные тесты в п.1 тоже стали летать, как в виртуалке?
  • Вопрос задан
  • 1995 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 2
@Wexter
Потому что гипервизор кеширует дисковые операции виртуалки в памяти
Ответ написан
@BorisKorobkov Автор вопроса, куратор тега MySQL
Web developer
Провел третий тест: MySQL на Windows без виртуалки. БД разворачивается примерно за 1.5 минуты.

Вывод: ускорение на порядок обусловлено виртуализацией и хранение БД в оперативной памяти.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
БД для запуска тестов, порядка 100 таблиц, в каждой в среднем по 10 полей и 10 записей.
синтетические тесты такие синтетические!

Про оптимизацию БД и виртуалок много всего написано, но с таким тестированием это пустая трата времени.
Ответ написан
@DmitriyA1
Была такая же ситуация.
база MySQL - на локальном Linux-машине (Ubuntu) разворачивалась ~30 минут.
На этой же машине, под Windows 7, под VirtualBox, запущена Ubuntu. Эта же база заливается ~15 минут.
Оборудование не менялось. Версии MySQL-сервера одинаковые.

Есть предположение, что это из-за драйверов, на материнскую плату.
Как проверить где затык?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы