Mysql работает на моем MacBook значительно медленнее, чем в других средах - PullRequest
5 голосов
/ 15 января 2010

Я хотел бы ускорить MySQL на моем MacBook. Это намного медленнее, чем MySQL, работающий на наших серверах или на виртуальных машинах на других ноутбуках.

Все таблицы, с которыми я имею дело, являются InnoDB. Я запустил много модульных тестов django, поэтому запускается множество команд создания таблиц.

Обновление:

Должен заметить, что я действительно сравниваю это с другим ноутбуком, на котором установлена ​​виртуальная машина Fedora, без каких-либо настроек my.cnf и не очень быстрым жестким диском. Я также знаю, что наши серверы работают довольно быстро, но я могу принять это.

Полагаю, это все еще проблема с жестким диском.

Ответы [ 4 ]

1 голос
/ 15 января 2010

Следует помнить одну вещь: ваш MacBook оснащен жестким диском для ноутбука. Даже если он составляет 7200 об / мин, следует ожидать, что он будет медленнее, и, конечно, медленнее, чем даже скромный жесткий диск сервера.

И даже на суперскоростной машине набор тестов django разрушает все кэши базы данных, так как он перестраивает базу данных при каждом запуске.

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

Создайте новый файл testsettings.py рядом с settings.py вашего приложения, содержащий:

from projectname.settings import *
DATABASE_ENGINE = 'sqlite3'

Затем, когда вы хотите запустить тесты очень быстро, вместо manage.py test, вы запускаете

manage.py test --settings=testsettings

Подробнее здесь .

Я также экспериментировал с размещением базы данных MySQL полностью на RAM-диске. К сожалению, я еще не работал над этим в Mac OS X.

(все это предполагает, что в вашей конфигурации mysql нет ничего серьезного:)

0 голосов
/ 15 января 2010

Вы не сообщали нам, какова была рабочая нагрузка, чтения или обновления, или и то и другое, но если это интенсивно для записи, вы можете попробовать установить innodb_flush_log_at_trx_commit в 0, чтобы innodb расслаблялся при вызовах * sync () - возможно, это плохо взаимодействие с ядром / дисковой подсистемой на Apple OS.

Вы также можете опубликовать файл my.cnf, который вы используете. Это также может быть проблема поиска DNS, если медлительность при подключении к БД. Чтобы исключить проблему DNS, установите skip-name-resolv в my.cnf.

0 голосов
/ 15 января 2010

Жесткий диск является одним из факторов, но также убедитесь, что вы проверите:

innodb_buffer_pool_size

Если вы используете innodb, возможно, вы захотите изменить это значение на что-то гораздо большее (50% вашей оперативной памяти или размер вашей базы данных). Но помните, что эта сумма будет фактически использоваться MySQL, поэтому, если вы все еще хотите использовать свою оперативную память для других целей ... вам, возможно, лучше согласиться с тем, что ваша рабочая станция разработки не так быстра, как настроенный сервер для того, чтобы быть базой данных MySQL.

0 голосов
/ 15 января 2010

Вы изменили конфигурацию MySQL по умолчанию на своем Macbook, чтобы она была ближе к тому, что происходит в других средах? Настройки по умолчанию для MySQL очень минимальны.

Я не знаком с тем, где MySQL установлен в OSX, но у вас должно быть несколько примеров файлов конфигурации для разных сред: [mysql home] / support-files /

Поэкспериментируйте с ними, скопировав их в /etc/my.cnf и перезапустив MySQL. Эти примеры файлов хорошо прокомментированы, так что это довольно хороший практический способ освоить некоторые базовые настройки MySQL. Если вы действительно запускаете InnoDB, вы можете закомментировать или удалить настройки MyISAM, пытаясь сохранить настройки для каждого из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...