Почему 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 тоже стали летать, как в виртуалке?
d-stream: Ага, и прощай база с отключением сервера.
Где-то читал что в гугле так делают, только у них там не один сервер, а несколько тысяч, им проще поднять один сервер с кучей рамы и реплицировать с кластера
Wexter: зато будет показательно по скорости.
А отключающийся сервер - это ближе к смешному, ибо в половине офисов дешевейшие компы с упсами живут годами без выключений...
И да, не факт что виртуалку удастся вообще восстановить после неожиданного отключения - все имеет свою цену.
Написано
Boris Köln
@BorisKorobkov Автор вопроса, куратор тега MySQL
Наверное, да, виртуалка все это держит в оперативной памяти.
Конкретно для этой БД, где запускаются тесты, не жалко в случае маловероятного падения потерять данные.
Boris Köln
@BorisKorobkov Автор вопроса, куратор тега MySQL
Структуру конкретных таблиц, индексы и данные сейчас обсуждать не будем.
Вопрос не "почему оно вообще тормозит", а "почему то же самое в виртуалке на порядок быстрее, чем без нее, хотя по логике должно быть наоборот"
Была такая же ситуация.
база MySQL - на локальном Linux-машине (Ubuntu) разворачивалась ~30 минут.
На этой же машине, под Windows 7, под VirtualBox, запущена Ubuntu. Эта же база заливается ~15 минут.
Оборудование не менялось. Версии MySQL-сервера одинаковые.
Есть предположение, что это из-за драйверов, на материнскую плату.
Как проверить где затык?
Boris Köln
@BorisKorobkov Автор вопроса, куратор тега MySQL
Драйверов чего именно?
С драйверами видеокарт теоретически могут быть проблемы, но уже лет 10 не сталкивался.
Про баги в драйверах HDD ни разу не слышал.
Есть разница в файловой системе (NTFS и Ext4), но быстродействие примерно одинаковое.