MYSQL innodb или myisam? Какой из них лучше для этого случая?
Я действительно забыл, какой тип базы данных мне выбрать для своей таблицы.
+-----------------------+
| id | userid | content |
+-----------------------+
Представьте себе этот стол. userid содержит идентификаторы пользователей, которые хранятся в другой таблице. Кроме того, некоторые другие таблицы используют поле id этой таблицы. Поэтому я подумал, что установка идентификатора в качестве первичного ключа и идентификатора пользователя в качестве внешнего ключа ускорит процессы объединения. Однако, если я выберу свою таблицу в качестве InnoDB для установки внешних ключей, то я не смогу выполнить FULLTEXT-поиск по содержимому (которое является полем TEXT).
Таким образом, в принципе, если я переключусь обратно на MyISAM, чтобы использовать поиск FULLTEXT, возникнут ли у меня проблемы при объединении, скажем, 3-4 таблиц из сотен миллионов строк?
PS: Если есть другой надежный способ создания таблиц для обработки как объединений, так и полных текстов, скажите, пожалуйста, что я также могу изменить структуру таблиц.
2 ответа
InnoDB масштабируется лучше, чем MyISAM. Если вы говорите о сотнях миллионов строк, тогда выбирайте InnoDB и адаптируйте поисковую систему. AFAIK, FULLTEXT становится очень медленным после определенного момента. Поэтому перейдите на InnoDB + поисковую систему по вашему выбору.
Посмотрите на ответ на этот вопрос: полнотекстовый поиск с InnoDB
Короче говоря, MyISAM блокирует всю таблицу, когда вы записываете в нее, так что это ухудшит производительность, когда у вас будет много записей в таблицу. Решение состоит в том, чтобы перейти к таблицам InnoDB для ссылочной целостности и использовать специальную поисковую систему для индексации / поиска контента (например, Lucene).