Разработка базы данных mySQL одна или несколько таблиц и использование innodb или myisam для производительности - PullRequest
0 голосов
/ 31 декабря 2011

Я разрешаю пользователям загружать следующие файлы - PDF / Видео / Фото.Все файлы, загруженные пользователем, отображаются на странице профиля.Все загруженные файлы можно искать по имени или тегам и типу файла.

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

Скажем, если в этой одной таблице хранится более 10 миллионов записей, поиск в конечном итоге замедлится.Я думаю о том, чтобы разбить одну таблицу на три отдельные таблицы , например, таблицу для pdf / photos / videos. В этом случае, если пользователи хотят искать все типы файлов, я объединяю весь поиск.это будет лучший подход?

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

Будет innodb будет лучшим выбором, если несколько пользователей загружают одновременно, для этого подходит innodb с блокировкой строк, правильно?

спасибо,:)

edit: я храню пути к файлам втаблицы БД не являются самим файлом.

1 Ответ

0 голосов
/ 01 марта 2012

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

Это позволит вам делать необычные вещи, такие как облака тегов, ссылки тегов в левой части этой страницы переполнения стека

Вы также можете использовать InnoDB, который обеспечивает поддержку внешнего ключа и лучшую производительность в более поздних версиях MySQL 5.1.x и выше. С версии 5.6 тоже может быть полнотекстовое индексирование

...