Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Подскажите пожалуйста, существуют ли ограничения на количество таблиц в базе данных MySQL?
Есть проект в котором для каждого пользователя хочу создавать отдельную таблицу. Будет ли это решение оптимальнее, чем одна огромная таблица для всех пользователей?
Неактивен
Вот цитата из одного источника
Кол-во таблиц и количество записей не лимитируются.
Кол-во таблиц myisam зависит от ограничения ОС в размещении нужного количества файлов (кол-во таблиц * 3) и от объема несущих дисков.
Для InnoDB - это ограничение на размер одного файла, но можно создавать сколько угодно файдов для хранения. Объем ограничивается размером дисков.
Количество записей в одной таблице ограничивается объемом несущих дисков для любого типа таблиц. Для InnoDB можно разбивать базу и таблица будет занимать место в нескольких базах. В MyIsam можно разбивать таблицу на несколько и пользоваться таблицей merge для просмотра всей таблицы. Размер одной таблицы ограничивается максимаьным размером файла в ОС.
nexus написал:
Будет ли это решение оптимальнее, чем одна огромная таблица для всех пользователей?
Нет, это не правильное решение.
Делайте одну таблицу.
Есть много решений для масштабирования. А каком количестве записей вообще идёт речь ?
Неактивен
Все будет зависить от развития проекта. Чем больше будет пользователей тем больше будет записей. Каждый пользователь может создавать формы, результаты которой будут заноситься в базу. У каждого пользователя может быть не ограниченное количество форм и полей в форме. Как тогда лучше организовать структуру базы данных? Я думал создать два таблицы: в одну писать id формы, дату и еще какую-то служебную информацию, а в другую таблицу заносить результаты формы:
Неактивен
Кол-во полей в таблице не влияют на скорость выборки. Разбивать нужно так, что бы не капаться лишний раз, но что бы и удобно было.
Неактивен
Не совсем понял, как этот запрос связан с пользователем ?
В общем когда создаёте структуру таблиц, заранее продумайте какого вида будут запросы. Чтоб все данные тянулись по индексам и не было разных мутных запросов с фулл-скан.
Если во всех таблицах будет user_id, то не важно сколько будет записей, вы будите вынимать записи всегда по индексу user_id.
А ещё таблицы лучше в InnoDB
Неактивен
А чем InnoDB лучше MyISAM? где можно почитать про то, из каких соображений нужно выбирать ту или иную таблицу!
Неактивен
nexus написал:
А чем InnoDB лучше MyISAM? где можно почитать про то, из каких соображений нужно выбирать ту или иную таблицу!
Почитать можно в гугле http://www.google.ru/#sclient=psy&h … mp;bih=821
Различий довольно много, но в вашем случае достаточно аргумента что MyISAM в случае записи, блокирует всю таблицу. То есть пока пользователю Васе делают update, все остальные пользователи ждут :-)
Отредактированно evgeny (11.06.2011 18:18:50)
Неактивен