2010-05-30 3 views
8

Я хочу создать новую таблицу для каждого нового пользователя на веб-сайте, и я предполагаю, что будет много пользователей, я уверен, что производительность поиска будет хорошей, но что с обслуживанием?Новая таблица для каждого пользователя?

Это MySQL, у которого нет ограничений по количеству таблиц.

Большое спасибо.

+3

Почему вы хотите создать новую таблицу для каждого пользователя? –

+1

придерживаться таблицы пользователя, которая имеет user_id, имя, адрес электронной почты и т. Д. И просто сделайте первичный ключ для своего user_id, чтобы вы могли легко найти пользователя. Если вы создадите таблицу для каждого пользователя, вы получите 100 столов с таблицами, в каждой из которых будет всего несколько информации. Отходы пространства и запутывание – jpjp

+2

Это также означает предоставление пользователю базы данных, что веб-приложение входит в систему как привилегия «создать таблицу». –

ответ

13

Фактически таблицы также хранятся в таблице. Поэтому в этом случае вы перемещаете поиск в таблице пользователей для поиска в системных таблицах таблицы.

Эксплуатация и ремонтопригодность пострадают плохо.

9

Почему вы, возможно, захотите это сделать? Для каждой вещи, которая нуждается в таблице, нужно иметь только одну таблицу и добавить столбец «пользователь». Наличие кучки таблиц против нескольких строк не улучшит вашу производительность.

4

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

6

Это не очень хорошая идея:

  • Максимальное количество таблиц не ограничено, но кэш таблицы конечен по размеру, открытие таблиц дорого. В MyISAM закрытие таблицы удаляет кеш-файл. Производительность будет сосать.
  • Если вам нужно изменить схему, вам нужно будет сделать один ALTER TABLE для пользователя, что будет ненужной болью
  • Поиск предметов, для которых нет конкретного пользователя, будет включать в себя ужасный запрос UNION между всеми или многими пользователями, таблицы
  • Это будет трудно правильно построить ограничения внешнего ключа, так как вы не будете иметь одну таблицу со всеми идентификаторами пользователя в любой дополнительной

Почему вы уверены, что производительность будет хорошо? Вы протестировали его?

Смежные вопросы