MYSQL FEDERATED таблицы

"Таблица FEDERATED не поддерживает индексы в обычном смысле; поскольку доступ к данным таблицы обрабатывается удаленно, фактически это удаленная таблица, которая использует индексы. Это означает, что для запроса, который не может использовать какие-либо индексы и поэтому требует при полном сканировании таблицы сервер извлекает все строки из удаленной таблицы и фильтрует их локально.Это происходит независимо от того, какой WHERE или LIMIT используется с этим оператором SELECT, эти условия применяются локально к возвращаемым строкам.

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

16.8.3. Примечания и советы по FEDERATED Storage Engine

Кто-нибудь может объяснить мне на примерах, что такое средства?

Что такое "запрос, который не может использовать индексы"?

Это означает, что я получаю полные данные с удаленного сервера в любом случае или нет?

1 ответ

Решение

Документация означает, что если вы выполняете запрос к объединенной таблице, он генерирует другой запрос к удаленной базовой таблице. Если запрос, выполняемый на удаленном сервере, не может использовать индекс, это вызывает сканирование таблицы на удаленном сервере, и, следовательно, все строки этой таблицы копируются по сети.

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

В очень редких случаях рекомендуется использовать механизм федеративного хранения MySQL. Я избегаю этого.

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