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

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

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

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

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


person Mucahit Sancar Kahveci    schedule 15.07.2010    source источник
comment
Правильно ли я предполагаю, что обе базы данных находятся на одном сервере?   -  person Abe Miessler    schedule 16.07.2010
comment
Да, они. И я уже пробовал объединять таблицы из разных баз данных. оно работает.   -  person Mucahit Sancar Kahveci    schedule 16.07.2010


Ответы (2)


С точки зрения производительности НИКАКОЙ разницы не будет. Просто держите свои индексы на месте, и вы не заметите, используете ли вы одну БД или несколько БД.

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

person Gaurav Phapale    schedule 15.05.2013
comment
Мой ответ предполагает, что все БД находятся на одном сервере БД. Если вы храните их на разных серверах БД, вы начнете наблюдать снижение производительности. - person Gaurav Phapale; 15.05.2013
comment
У вас могут быть внешние ключи между БД в MySQL, если они находятся на одном сервере. Но не знаю, что будет, если они будут на разных серверах или в других СУБД. - person Mucahit Sancar Kahveci; 19.06.2013

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

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

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

person webasdf    schedule 13.05.2011
comment
Вы уверены, что замедление было не из-за размера базы данных? Скорее всего, вы заметили бы замедление, даже если бы таблицы находились в одной базе данных. - person Costa; 03.06.2013