#mysql #database #partitioning
#mysql #База данных #разбиение
Вопрос:
Каков наилучший способ разбиения простой таблицы последователей, которая имеет первичный ключ (user_id, follower_id), а также имеет индекс (follower_id)?
Мы делаем запросы select как с user_id, так и с follower_id. Если мы разделим данные на основе user_id, мы не сможем получить полные результаты на основе follower_id из той же таблицы. Дублирование таблицы в отдельные таблицы последователей и разбиение каждой таблицы на основе их собственных первичных ключей казалось вариантом, но мы не уверены в этом.
В настоящее время в таблице содержится 10 миллионов записей, и она быстро растет.
Ответ №1:
PARTITIONing
по своей сути не обеспечивает никакого преимущества в производительности. На самом деле, это иногда замедляет обработку. Есть 4 варианта использования, где PARTITION
это полезно; ваше описание, похоже, не является одним из них.
Симметрично ли отношение user:: follower? То есть, если я «следую» за вами, вы обязательно «следуете» за мной? (Ответ может привести к другому способу структурирования данных.)
Для отношения «многие: многие», на которое это похоже, следуйте приведенным здесь рекомендациям. Предположительно, у вас есть одна таблица «Users», и связь между этой таблицей и самой собой.
Я (пока) не вижу, где у вас возникнут какие-либо проблемы с отсутствием разделения и таблицей «многие: многие». О чем вы беспокоитесь?
Для дальнейшего обсуждения, пожалуйста, предоставьте предварительные CREATE TABLE
и. SELECTs