MYSQL innodb или myisam? Какой из них лучше для этого случая? - PullRequest
1 голос
/ 19 октября 2011

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

+-----------------------+
| id | userid | content |
+-----------------------+

Представь себе эту таблицу. userid содержит идентификаторы пользователей, которые хранятся в другой таблице. Кроме того, некоторые другие таблицы используют поле id этой таблицы. Поэтому я подумал, что установка идентификатора в качестве первичного ключа и идентификатора пользователя в качестве внешнего ключа ускорит процессы объединения. Однако, если я выберу свою таблицу в качестве InnoDB для установки внешних ключей, то я не смогу выполнить FULLTEXT-поиск по содержимому (которое является полем TEXT).

Так что, в принципе, если я переключусь обратно на MyISAM для использования поиска FULLTEXT, возникнут ли у меня проблемы при объединении, скажем, 3-4 таблиц из сотен миллионов строк?

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

Ответы [ 2 ]

3 голосов
/ 19 октября 2011

Посмотрите на ответ на этот вопрос: Полнотекстовый поиск с InnoDB

Короче говоря, MyISAM блокирует всю таблицу при записи в нее, что ухудшит производительностькогда у вас много записей в таблицу.Решение состоит в том, чтобы перейти к таблицам InnoDB для ссылочной целостности и использовать специальную поисковую систему для индексации / поиска контента (например, Lucene).

1 голос
/ 09 декабря 2011

InnoDB масштабируется лучше, чем MyISAM.Если вы говорите о сотнях миллионов строк, тогда выбирайте InnoDB и адаптируйте поисковую систему.AFAIK, FULLTEXT становится очень медленным после определенного момента.Поэтому, выбирайте InnoDB + поисковую систему по вашему выбору.

...