У меня есть 10k пользователей в моей базе mySQL, для каждого пользователя мне нужно сохранить последние 500 событий. Пожалуйста, советую мне, как мне создать свою БД? Один MegaEventsTable или выделенный стол для каждого пользователя?
Плюсы многих маленьких столов:
- я могу быстро выбрать, например, 50 событий по типу от 500 записей, чем от 500 * 10 тыс. Записей.
- его быстрее получить 500 лучшие записи, и убить все другие записи в таблице для этого пользователя
- я могу шард моей базы данных записей некоторое время в будущем
контраса:
- я чувствую, что 10k таблицы ужасна идея (и что, если будет 100K)
Один стол, чтобы управлять ими, или тысячами меньше?
-1
A
ответ
4
Практически нет ситуаций, когда у вас должна быть одна таблица для каждого пользователя. Существует множество причин. Вот некоторые из них:
- MySQL менее эффективен с небольшими таблицами, чем с большими таблицами. Маленькие таблицы занимают больше места из-за частично заполненных страниц.
- Вы не можете использовать
userId
как ссылку на внешний ключ, потому что это относится к нескольким таблицам. - Вы не можете легко изменить структуру таблицы
Users
. Вы должны изменить тысячи из них. - Вы можете использовать индексы и разделы для увеличения скорости ваших запросов.
- Базы данных предназначены для обработки больших объемов данных, а 10 000 строк - это не большой объем данных.
Смежные вопросы
- 1. один симпатичный принтер «чтобы управлять ими все»
- 2. Один XSL, чтобы управлять ими все
- 3. Ширина столбца Flex DataGrid: один столбец, чтобы управлять ими всеми?
- 4. Контроллер One View, чтобы управлять ими всеми?
- 5. One Upstart, чтобы управлять ими все
- 6. один проект JB java, чтобы управлять ими все
- 7. Одна функция, чтобы управлять ими все
- 8. One segue, чтобы управлять ими все
- 9. Одно раскрывающееся меню, чтобы управлять ими все
- 10. PHP-кодирование - класс для каждого представления или один класс, чтобы управлять ими всеми?
- 11. Одно регулярное выражение, чтобы управлять ими всеми (эффективно)?
- 12. ли лучше иметь огромный стол Hbase или несколько меньше, один
- 13. Запустить несколько subprocess.call и управлять ими
- 14. Один стол или много?
- 15. Два или один стол отношений?
- 16. Одна команда для каждого состояния или одна команда, чтобы управлять ими все
- 17. Array of TButtons - как управлять ими
- 18. MySQL: Сотни таблиц или один большой стол?
- 19. Как обрабатывать репозитории пакетов Debian в Python и управлять ими?
- 20. Один большой стол или несколько таблиц?
- 21. один XSLT, чтобы управлять им все
- 22. iOS UIStepper & NSUserDefaults - Как управлять ими вместе и использовать двойной
- 23. Один большой стол или много меньших таблиц
- 24. MySql несколько столов или один большой стол?
- 25. Массив объектов суперкласса. Как управлять ими как подклассами?
- 26. Один тип с несколькими вариантами использования - один стол или два?
- 27. Зачем нужен обманутый стол вдвое меньше?
- 28. Как создавать сеансы и управлять ими на C++?
- 29. Сделать стартовый стол как можно меньше
- 30. При работе с несколькими проектами TFS мне нужен родительский командный проект, чтобы управлять ими?
Голосование, чтобы перейти на DBA.SE, где он был перечерчен: http://dba.stackexchange.com/questions/121326/one-table-to-rule-them-all-or-thousand -smaller –
И, пожалуйста, не делайте этого (отправляя тот же вопрос на многих сайтах). Одного вопроса на одном сайте достаточно. –
@ypercube извините, просто здесь больше людей, чем у DBA. Должен ли я удалить свой пост в DBA? – Asprelis