Сколько баз данных может обрабатывать MySQL? - PullRequest
8 голосов
/ 22 июня 2010

Мой сервер MySql в настоящее время имеет 235 баз данных.Должен ли я беспокоиться?Все они имеют одинаковую структуру с таблицами MyISAM.

Аппаратное обеспечение представляет собой виртуальную машину с 2 ГБ ОЗУ, работающую на четырехъядерном процессоре AMD Opteron 2,2 ГГц.

Недавно cPanel прислал мне электронное письмо с сообщениемСбой MySql и перезапуск.

Ожидается создание новых баз данных, и мне интересно, следует ли мне добавить больше памяти или просто добавить другую виртуальную машину.

Ответы [ 4 ]

7 голосов
/ 22 июня 2010

«Базы данных» в mysql на самом деле являются каталогами, и это никак не влияет на их пределы, независимо от того, помещаете ли вы все таблицы в одну или каждую в свою собственную.

Основная проблема - кеш таблиц. Без его настройки у вас будет кеш таблицы по умолчанию (обычно = 64), что означает, что вы будете закрывать таблицу каждый раз, когда открываете ее. Это невероятно плохо.

За исключением MyISAM, это еще хуже, потому что закрытие таблицы выбрасывает ее ключевые блоки из кэша ключей, что означает, что последующие поиски или сканирование индекса будут считывать фактические блоки с диска, что ужасно и медленно и действительно должно избегать.

Мой совет:

  • Если возможно, немедленно увеличьте кеш таблиц до> общего количества таблиц
  • Мониторинг глобальной переменной состояния Opened_Tables в вашем мониторинге; если оно быстро увеличивается, это плохо.
  • Проведите тестирование производительности и надежности на том же оборудовании в непроизводственной среде (если вы этого еще не сделали).
1 голос
/ 23 июня 2010

(репост моего комментария для лучшей видимости) Спасибо всем за ваши комментарии. Система похожа на Google Analytics. Посещения пользователей сайта регистрируются в «главной» таблице. Нативное приложение отслеживает основную таблицу, обрабатывает зарегистрированные посещения и записывает их в базу данных пользователей. У каждого пользователя есть своя БД. Это было решено для шардинга. Различные отчеты и статистика выполняются для каждого пользователя. И это быстрее, если он работает только на определенной базе данных (меньше данных), я знаю, что это не лучшая установка Но мы должны немного с этим справиться.

0 голосов
/ 22 июня 2010

Вы делаете это неправильно.

Прокомментируйте некоторые подробности о ваших базах данных, и мы, возможно, расскажем вам, где ваш дизайн пошёл не так.

0 голосов
/ 22 июня 2010

Я не верю, что существует жесткое ограничение, единственное, что действительно ограничивает вас, это ваше оборудование и трафик, который будут получать эти базы данных.

Кажется, у вас очень мало памяти, что, вероятно, означает, что у вас нет большого количества соединений ...

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

Мое предложение - MySQL (или любой другой сервер баз данных в этом отношении) мог бы использовать больше памяти. Тебе никогда не хватит.

...