Вообще говоря, после разделения библиотеки по вертикали и горизонтали достаточно разбить таблицу разумно по вертикали, горизонтально разбивать таблицу не рекомендуется.
библиотечный сплит
вертикальное разделение
Подбиблиотека по бизнесу, например библиотека заказов, библиотека товаров
разделить по горизонтали
Например, библиотека order снова разбивается, библиотеки order1-order32, такие правила, как поле orderId (Long) сдвигаются вправо на 42 бита, то есть в первых нескольких библиотеках.
Например, 4418858115632 находится в библиотеке ORDER1.
Здесь вы можете рассчитать, Long64, младшие 42 бита представляют собой фактический идентификатор, 2 в 42-й степени — это 4398 миллиардов, даже если в день поступает 100 миллионов заказов, 43980/360 = 122.
Его можно использовать более 100 лет.Если типы монад разные, то рекомендуется добавлять разные префиксы и делить их по вертикали на разные базы данных.
разделение стола
вертикальное разделение
Вертикальное разделение относится к таблице данныхразделение столбца, Чтобы разделить столбец таблицы на несколько таблиц
Обычно мы разбиваем по вертикали по следующим принципам:
- Вынесите менее часто используемые поля в отдельную таблицу;
- Разделите большие поля, такие как текст и блоб, и поместите их в прикрепленную таблицу;
- Столбцы, которые часто объединяют запросы, помещаются в одну таблицу;
Вертикальное разбиение — это чаще шаги, которые следует выполнять в начале проектирования таблицы данных, а затем использовать ключ jion при запросе;
разделить по горизонтали
Горизонтальное разделение относится к таблице данныхразделение строк, когда количество строк в таблице превышает 2 миллиона, она будет замедляться.В это время данные одной таблицы можно разбить на несколько таблиц для хранения.
Некоторые хитрости для разделения по горизонтали
1. Принцип разделенияОбычно мы используем метод по модулю для разделения таблицы, например, пользовательская таблица с 400 Вт.users
, чтобы повысить его эффективность запросов, мы разделяем его на 4 таблицыusers1,users2,users3,users4
Распределить данные по четырем таблицам по модулю IDId%4+1 = [1,2,3,4]
Затем запрос, обновление и удаление также запрашиваются по модулю.
$_GET['id'] = 17,
17%4 + 1 = 2,
$tableName = 'users'.'2'
Select * from users2 where id = 17;
Временная таблица также требуется при вставкеuid_temp
Чтобы предоставить автоматически увеличивающийся идентификатор, единственным использованием таблицы является предоставление автоматически увеличивающегося идентификатора;
insert into uid_temp values(null);
Получив самоувеличивающийся идентификатор, вставляем таблицу по модулю;
Обратите внимание, что столбцы и типы полей в таблице после горизонтального разделения должны быть такими же, как и в исходной таблице, но не забудьте удалить auto_increment
Кроме того
- Часть бизнес-логики также можно заархивировать и разделить по таким полям, как регион и год;
- Разделенная таблица может удовлетворить только требования к эффективности некоторых запросов.В настоящее время нам необходимо ограничить поведение пользователей при выполнении запросов из интерфейса при планировании продукта. Например, мы разделили архивы по годам.В настоящее время дизайн страницы ограничивает пользователя выбором года перед запросом;
- При выполнении анализа или статистики из-за потребностей ваших собственных людей не имеет значения ждать больше, а параллелизм очень низок.В это время вы можете использовать объединение, чтобы объединить все таблицы в одно представление для запроса, а затем запрос;