MySQL Federated Storage Engine против репликации (производительность)
Короче говоря, я имею дело с большой базой данных, в которой основные данные пользователя (идентификатор пользователя (индекс), имя пользователя, пароль, родительский пользователь, статус) хранятся в одной базе данных, а расширенные данные пользователя (тот же идентификатор пользователя (индекс), полное имя, адрес) и т. д.) хранятся в другой базе данных на другом сервере.
Мне нужно сделать запрос, в котором я выбираю всех пользователей, принадлежащих конкретному пользователю (через родительское поле пользователя из базы данных основных данных пользователя), отсортированных по их полному имени (из расширенного поля сведений о пользователе) и всего 25 одновременно (там тысячи, может быть, десятки тысяч для любого одного пользователя).
Насколько я могу понять, есть три возможных решения;
Нет JOIN - получить все идентификаторы пользователей в одном запросе и запустить второй запрос на основе этих идентификаторов. Это было бы хорошо, за исключением того, что число идентификаторов пользователей может быть настолько большим, что оно превысит максимальную длину запроса или будет ужасно неэффективным.
Скопируйте таблицу базы данных с основными данными пользователя на сервер с расширенными данными, чтобы я мог присоединиться
Используйте объединенную таблицу механизма хранения для достижения тех же результатов, что и #2
Кажется, что 3 - лучший вариант, но мне удалось найти мало информации о производительности, и я также нашел один комментарий, чтобы быть осторожным при использовании этого в производственных базах данных.
Буду признателен за любые предложения о том, что будет лучшим вариантом реализации.
Спасибо!
2 ответа
FEDERATED таблицы - хорошая функция, но они не поддерживают индексы, которые могут значительно замедлить ваше приложение.
Если (!) вы только для чтения из базы данных пользователей на удаленном сервере. тиражирование будет более эффективным, а также быстрее.
Говоря о производительности или ограничениях, у Federated Engine есть много ограничений. Он не поддерживает транзакции. Производительность таблицы FEDERATED при массовых вставках ниже, чем у других типов таблиц и т. Д.
Механизмы репликации и объединения не предназначены для одинаковых действий. Прежде всего, вы пробовали оба?