Когда не нужно разделить базу данных? (думая о разделении MySQL )
В моем случае
- Я начну с пары миллионов строк, оттуда они должны расти.
- Первичный ключ в символьном поле, который служит наиболее частым ограничением запросов (и частые поиски - по крайней мере, несколько в секунду).
- Первичный ключ будет хеширован, чтобы служить ключом раздела
- Обновления будут внесены в каждую строку, которая используется в частых запросах, упомянутых выше.
- Менее частые поиски (по столбцам даты или другим) должны будут попасть на все разделы
Даже для последнего пункта, поиск не выполняется параллельно, так что во всех случаях это победа ? Каковы недостатки разделения? Почему это не то, что ВСЕ используют по умолчанию, по крайней мере, когда вы просматриваете более миллиона записей?
ОБНОВЛЕНИЕ - я выбрал ответ zgguy, но учтите, что я добавил свой собственный ответ с результатами своего собственного исследования, включая ссылку на действительно хороший ответ на похожий вопрос, который был очень полезен для меня.
Ответ здесь хорошо написан и приводит аргументы, аналогичные ответу zgguy , что разделение не принесет вам большой выгоды, если таковая имеется, в сценарии с одним компьютером, где наиболее частые поиски основаны на первичном ключе или чем-то подобном (потому что индексированные поиски должны быть такими же быстрыми).
На самом деле, общий совет кажется, что главная причина разделения - это тангенциальная и в основном связанная с управлением: например, разделять ваши данные на основе даты, если вам нужно часто чистить старые записи. Хотя было отмечено, что это также может повысить производительность поиска, если ваши данные таковы, что большинство всех запросов будут попадать только в недавно добавленные записи.
Я также видел упоминание о том, что MySQL никогда ничего не делает параллельно (было бы неплохо увидеть некоторые ссылки или более подробное объяснение этого).
Не видел, чтобы кто-нибудь говорил о том, добавляет ли деятельность по записи разные соображения.
источник
Самое первое, что приходит на ум - это обрезка разделов ; если это не то, что ваши запросы могут использовать.
Вам понадобится очистка большого количества данных из таблицы, поскольку разбиение поможет вам. Хотя старый, но этот пост из Питера имеет несколько моментов для рассмотрения.
и еще одна вещь, о которой можно подумать, это простота использования простых таблиц ... разбиение требует дополнительной работы и обслуживания.
источник