Мой сервер MySql в настоящее время имеет 235 баз данных. Я должен волноваться? У них всех есть та же структура с таблицами MyISAM.
Аппаратные средства являются виртуальной машиной с RAM на 2 ГБ, работающей на Четырехъядерном AMD Opteron 2.2GHz.
Недавно cPanel послал мне электронное письмо, говоря, что MySql перестал работать, и перезапуск был сделан.
Новые базы данных, как ожидают, будут созданы, и интересно, должен ли я добавить больше памяти или если я должен просто добавить другую виртуальную машину.
"Базы данных" в mysql на самом деле являются каталогами, на их пределы не влияет, помещаете ли вы все таблицы в одну или каждую в свою.
Основная проблема - это кэш таблиц. Не настроив его, вы будете иметь кэш таблиц по умолчанию (=64 обычно), что означает, что вы будете закрывать таблицу каждый раз, когда открываете ее. Это невероятно плохо.
Только в MyISAM это еще хуже, потому что при закрытии таблицы ключевые блоки выбрасываются из кэша ключей, что означает, что последующие поиски индекса или сканирование будут считывать фактические блоки с диска, что ужасно и медленно, и этого действительно нужно избегать.
Мой совет:
(репост моего комментария для большей наглядности) Спасибо всем за ваши комментарии. Система в чем-то похожа на Google Analytics. Посещения веб-сайта пользователями регистрируются в «главной» таблице. Собственное приложение отслеживает главную таблицу, обрабатывает зарегистрированные посещения и записывает их в базу данных пользователей. У каждого пользователя своя БД. Это было решено для шардинга. Для каждого пользователя ведутся различные отчеты и статистика. И это быстрее, если он работает только с определенной БД (меньше данных). Я знаю, что это не лучшая установка. Но нам нужно какое-то время с этим разобраться.
Вы делаете это неправильно.
Прокомментируйте с некоторыми особенностями ваших баз данных, и мы, вероятно, сможем сообщить вам, где ваш дизайн пошел не так, как надо.
Я не верю, что существует жесткое ограничение, единственное, что действительно ограничивает вас, - это ваше оборудование и трафик, который будут получать эти базы данных.
Похоже, у вас очень мало памяти, что, вероятно, означает, что у вас нет большого количества подключений ...
Вам следует начать с профилирования использования для каждой базы данных (или набора баз данных, в зависимости от того, как они используются, конечно ).
Мое предложение - MySQL (или любой другой сервер баз данных в этом отношении) мог бы использовать больше памяти. Тебе никогда не бывает достаточно.