MySQL Объединение таблиц InnoDb и MyiSAM - PullRequest
1 голос
/ 06 декабря 2011

Я создаю небольшую поисковую систему для некоторых данных, и мне нужно использовать MyiSAM из-за ее функции полнотекстового поиска.К сожалению, мне также нужно использовать транзакции для фиксации и отката, чтобы обеспечить ввод данных, которые будут искать.

Я создал таблицу InnoDb для хранения данных (поскольку она может выполнять фиксацию и откат), а такжеТаблица MyiSAM, которая является точной копией таблицы InnoDb для использования полнотекстового поиска.Теперь проблема заключается в синхронизации этих таблиц.

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

Я в порядке, когда пишу код, который будет синхронизировать таблицы при фиксации, ноЯ не уверен в быстром способе объединить две таблицы.Таблицы могут быть огромными, и я не хочу, чтобы пользователь ждал час, чтобы вставить одну запись.В этом же контексте я не хочу, чтобы пользователь не мог получить доступ к поисковой системе в какое-то время дня в течение часа, поскольку задание cron синхронизирует две таблицы и блокирует таблицу MyiSAM.

OneТакже стоит упомянуть, что мой сервер MySQL находится на Bluehost, и поэтому MySQL заблокирован на версии 5.1, поэтому я не могу использовать новый полнотекстовый поиск InnoDb с версией 5.6.И, конечно, я не могу установить какой-либо сторонний поисковый сервер, такой как sphinx, на Bluehost.

Если у кого-то есть хорошее решение моей проблемы, я был бы очень признателен.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2013

У меня небольшой обходной путь

  1. Настройка MySQL Replication
  2. На Мастере
    • удалить индекс FULLTEXT для таблицы MyISAM
    • преобразовать таблицу MyISAM в InnoDB
  3. На Рабе
    • преобразовать таблицу InnoDB обратно в MyISAM
    • пересоздать индекс FULLTEXT для таблицы MyISAM

Идем вперед

  • делайте все свои ВСТАВКИ, ОБНОВЛЕНИЯ и УДАЛЕНИЯ на Мастере.
  • выполняйте весь ваш поиск в FULLTEXT на подчиненном устройстве.

Я предлагал это раньше: https://dba.stackexchange.com/a/22425/877

0 голосов
/ 15 февраля 2013

Это довольно старый вопрос, но для людей, которые задают этот вопрос при поиске: таблицы InnoDB поддерживают индексы FULLTEXT, начиная с MySQL 5.6.4.

...