2012-01-14 5 views
0

В настоящее время у меня есть приложение Rails, которое настроено с одной базой данных MySQL.Рельсы и несколько баз данных в backend

Проблема в том, что размер базы данных растет очень быстро. Примерно ~3,500,000 записей каждые 3 месяца и 1 GB.

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

Я действительно растягиваю границы MySQL здесь? Есть ли какой-либо плагин Rails, который я могу использовать, чтобы один и тот же код работал с несколькими базами данных в резервной копии, чтобы один сервер БД не обременял себя?

Что бы вы сделали в такой ситуации?

ответ

0

вы можете попробовать partitioning базу данных

+0

Разделение mysql innodb несколько ограничено, вы не можете использовать внешние ключи из секционированной таблицы или ссылаться на секционированную таблицу из других таблиц. –

0

Размер вы описываете здесь отнюдь не является слишком большим для одного экземпляра MySQL. Несколько миллионов строк и общий размер нескольких G не так уж плохи. Существует много преимуществ, которые вы можете получить, просто настроив свои конфигурации. Вы используете Innodb? Если так, внимательно посмотрите на файл my.cnf и обратите пристальное внимание на innodb_buffer_pool_size. Кроме того, какой у вас доступ к patten? несколько чтений, мало пишет? несколько записей несколько читает? и то и другое ? Вы можете добавить слой кэширования, например memcached. В случае нескольких чтений вы можете добавлять ведомые устройства репликации. Короче говоря, для вас может быть какая-то взлетно-посадочная полоса, прежде чем вам придется очертить вашу базу данных.

Смежные вопросы