Влияние на производительность объединения таблиц из разных баз данных

У меня есть веб-сайт, использующий базу данных с именем, скажем, "site1". Я планирую разместить другой сайт на том же сервере, который также будет использовать некоторые таблицы из "site1".

Поэтому я должен использовать три разные базы данных, такие как "site1" (для данных первого сайта), "site2" (для данных второго сайта) и "общие" (для общих таблиц). В котором будут общие операторы соединения между базами данных общей и site1 и site2. Или я должен поместить все таблицы в одну базу данных?

Какую практику лучше всего делать? Как спектакли отличаются в каждой ситуации? Я использую MySQL. Так как обстоят дела с MySQL?

Заранее спасибо...

2 ответа

Решение

Я могу говорить из недавнего личного опыта. У меня есть несколько старых запросов MySQL в некотором PHP-коде, которые отлично работали с относительно небольшой базой данных, но по мере роста запрос становился все медленнее и медленнее.

У меня есть freeradius, запускающий mysql в своей собственной базе данных вместе с другим приложением php для управления, которое я написал. Таблица freeradius > 1,5 миллиона строк. Я пытался соединить таблицы из базы данных моего приложения с базой данных freeradius. Я могу точно сказать, что 1,5 миллиона строк - это слишком много. Выполнение некоторых запросов полностью заблокировало мое приложение. В итоге мне пришлось переписывать части моего php-приложения, чтобы сделать что-то по-другому (т.е. не объединять 2 таблицы из разных баз данных). Я также проиндексировал таблицу учета радиуса в некоторых ключевых полях и оптимизировал некоторые запросы (оператор MySQL EXPLAIN замечательно помогает в этом). Теперь все намного быстрее.

Я определенно буду колебаться, чтобы объединить 2 таблицы из разных баз данных в будущем, если в этом нет особой необходимости.

С точки зрения производительности, не будет никакой разницы. Просто держите ваши индексы на месте, и вы не заметите, используете ли вы одну или несколько БД.

Помимо производительности, я могу подумать о двух небольших последствиях: 1. Вы не можете иметь внешние ключи в разных БД. 2. Разделение таблиц в БД в зависимости от их использования или приложений может помочь вам легко управлять разрешениями.

Другие вопросы по тегам