Большое количество таблиц в MySQL

Wise_Fox

Новичок
Большое количество таблиц в MySQL

Ребята, подскажите мне, пожалуйста, вот по такому вопросу. Как лучше организовать базу данных, если планируется, что пользователи будут загружать по 500 000 - 600 000 записей за раз и некоторую часть этих записей надо будет хранить? Я пока решим остановиться на том, чтобы при каждом submite для каждого пользователя будет создаваться новая таблица, а при завершении сеанса эта таблица будет удаляться. Как сильно будет отличаться скорость работы mysql в случае, если все это будем "пихать" в одну таблицу или в несколько, как я и хочу? Каждая таблица - это несколько файлов (в зависимости от типа, но у меня myisam). К чему приведет увеличение числа этих файлов и зависит ли что то от хостинга?
 

Gas

может по одной?
нечётко описана задача.
1. "некоторую часть этих записей надо будет хранить" - это какую часть, 5 записей или 50% ?
2. количество "пользователей" будет неограничего или это какой-то закрытый проект где всего несколько этих "пользователей"?
3. "загружать по 500 000 - 600 000 записей за раз" - структура этих "записей" для всех пользователей одна?
 

Wise_Fox

Новичок
1) По желанию пользователей: примерно 20% будет сохраняться;
2) Количество пользователей не ограничено, но их будет порядка 5000;
3) Да. Структура записей будет одна.
 

Gas

может по одной?
честно говоря, очень странная задача, но по имеющимся данным я бы поступил так:
* для загрузки данных - если пользователь загружает данные и они тут-же обрабатываются, где в результате остаётся 20% нужных данных, то создавал бы каждый раз отдельную таблицу с уникальным именем, после переноса "нужных записей" в "рабочие таблицы" удалял бы её.
* рабочие таблицы - шардинг, например, считаем что каждая таблица допустим на 50 миллионов записей.
* диспетчер - класс/метод/функция, которая по id пользователя возвращает имя таблицы с данными пользователя. Можешь чтоб сразу возвращалась информация о сервере и базе данных, для размазывания ещё и по разным серверам. Если пользователь новый, то смотря на статистику заполненности таблиц, привязывает к более пустой, а можно для начала и не париться - сделать стандартно uid % N_количество_таблиц = номер таблицы, по мере роста логику распеределения улучшать.

но так как никакой информации нет (залил пользователь 600K и что с ними происходит, какие операции будут произволиться над 20% оставшихся записей), то всё это может оказаться пальцем в небо.
 

Wise_Fox

Новичок
Задача не странная, а довольна типичная, на мой взгляд, - фильтрация списка истекших доменов.
Пользователь сам решает, сколько % от загруженных записей он будет оставлять, поэтому обработать сразу все записи и оставить 20% не удастся.
Да. У меня сайт на CodeIgniter Framework, поэтому все на классах и методах.
А вот за идею по "размазыванию" по разным серверам - ОГРОМНОЕ спасибо!
 
Сверху