MySQL чрезвычайно медленный под управлением Snow Leopard

#mysql #performance #osx-snow-leopard

#mysql #Производительность #osx-snow-leopard

Вопрос:

Я установил исходный дистрибутив MySQL 5.1.40 (64-разрядный исполняемый файл x86_64), следуя этим инструкциям Hivelogic и mysql (2.8.1) gem, используя ARCHFLAGS=»-arch x86_64″ .

Я использую его для разработки на Ruby on Rails, и моя проблема в том, что даже если MySQL работает во всех отношениях, он чрезвычайно медленный.
Возьмите это сравнение с sqlite3 при выполнении стандартной rake db: migrate, создающей около 15 таблиц.

MySQL:

сокращение времени базы данных: перенос
реального пользователя 0m4.882 s
, пользователя 0m1.426s
, системы 0m0.235s

sqlite3:

сокращение времени базы данных: перенос
реального пользователя 0m2.282s
0m1.501s
системы 0m0.255s

Также следует учитывать, что около 1,5 с времени выполнения каждого теста приходится на загрузку rails framework, что означает, что sqlite3 выполняет SQL-задачи примерно за 0,5-1 с, в то время как MySQL требуется более 3 с для одного и того же набора задач.

Разве это не просто неправильно? Что может быть причиной этого? Кто-нибудь испытывает ту же проблему?

Я несколько раз устанавливал и переустанавливал mysql и mysql / ruby gem, но всегда с одним и тем же результатом … : (

Моя установка Snow Leopard — это обновление, а не новая установка. Может ли это быть причиной проблемы? Какая-то устаревшая библиотека?

Спасибо!

Ответ №1:

Судя по данным в вашем вопросе, похоже, что вы сравниваете бананы с апельсинами.

В частности, есть ли у вас какие-либо доказательства того, что результаты даже не соответствуют действительности? Сравнение с другими платформами, выполняющими те же тесты?

Это вообще тест, который имеет отношение к тому, что вы в конечном итоге хотите сделать? Т.е. вы тестируете что-то, что имеет отношение к типичному набору задач, которые вы обычно выполняете, или пытаетесь оптимизировать для одноразовой задачи, которая выполняется во время установки?

Обратите также внимание, что SQLite и MySQL имеют радикально разные профили производительности. SQLite — это однопользовательская база данных, не являющаяся клиентом / сервером, тогда как MySQL обычно настроен на выполнение роли клиента / сервера. Помимо совершенно разных профилей производительности, это также приводит к совершенно другим характеристикам масштабируемости.

Комментарии:

1. Спасибо за ваш ответ bbum! Единственное сравнение, которое у меня есть с другой платформой, заключается в том, что я запустил тот же тестовый набор (который использует вышеупомянутую db: migrate) под Leopard, и теперь он значительно медленнее под Snow Leopard, время выполнения которого составляет около 1 минуты в Leopard и около 3-4 минут в Snow Leopard. Я также заметил, что mysql, кажется, «задыхается», чего не произошло под управлением Leopard. Если я пытаюсь вставить 200 записей — первые 30-40 выполняются молниеносно (~ 0,8 мс), но затем они резко замедляются до ~ 200 мс на вставку, хотя сложность между первыми вставками и последними одинакова.

2. ХОРОШО — я бы предложил использовать sample как для Leopard, так и для Snow Leopard, чтобы получить своего рода обзор того, как выполняются циклы процессора. Это также может быть связано с изменениями синхронизации диска между двумя операционными системами. В любом случае, обычно требуется настроить базу данных под определенную систему.