Каковы преимущества вертикального разделения по сравнению с горизонтальным разделением?

Я просто не могу понять, когда и в какой ситуации мы выберем вертикальное разделение вместо горизонтального.

Каковы преимущества вертикального разделения по сравнению с горизонтальным разделением?

Есть ли примеры веб-сайтов/компаний/кого-либо, кто использует вертикальное разделение, и что является/будет основной причиной такого решения?


person totsum    schedule 12.07.2011    source источник
comment
Я также ожидаю неравномерного распределения при использовании этого метода. Что-то вроде первого символа хэша имени будет иметь для меня больше смысла.   -  person Joel Coehoorn    schedule 12.07.2011
comment
eph.co.uk/resources/email-address-length -faq/#emailshortlength Они предназначены для адресов электронной почты, однако есть таблица, показывающая длину имени пользователя, которая может оказаться полезной. Нет, сегментирование на основе длины имени пользователя, скорее всего, будет непоследовательным.   -  person Rex Morgan    schedule 12.07.2011
comment
ребята, прочитайте вопрос еще раз!   -  person totsum    schedule 12.07.2011
comment
@joel, ребята, прочитайте вопрос еще раз!   -  person totsum    schedule 12.07.2011


Ответы (2)


Основная причина иметь вертикальное разделение — это когда в таблице есть столбцы, которые обновляются чаще, чем остальные. Вы их разделяете в другой таблице/разделе, и при выполнении обновлений не обновляете остальную часть таблицы. Примером может быть счетчик сообщений. Если он находится в той же таблице, что и другие пользовательские данные, каждое обновление счетчика (а их много) будет блокировать всю запись, но читать ее нужно часто. При вертикальном секционировании обновленной таблицей будет user_counters, и количество обновлений не повлияет на производительность пользователей.

person Maxim Krizhanovsky    schedule 12.07.2011

Я полностью согласен с тем, что сказал Дархазер.

Существует две основные формы разделения:

  1. Горизонтальное секционирование — эта форма секционирования строк таблицы на сегменты таким образом, что формируются отдельные группы физических наборов данных на основе строк, к которым можно обращаться индивидуально (один раздел) или коллективно (один ко всем разделам). Все столбцы, определенные для таблицы, находятся в каждом наборе разделов, поэтому отсутствуют фактические атрибуты таблицы. Примером горизонтального секционирования может быть таблица, содержащая исторические данные счетов за десять лет, разбитая на десять отдельных секций, где каждая секция содержит данные за один год.
  2. Вертикальное секционирование — эта схема секционирования традиционно используется для уменьшения ширины целевой таблицы путем вертикального разделения таблицы таким образом, чтобы в конкретный набор данных включались только определенные столбцы, а каждая секция включала все строки. Примером вертикального секционирования может быть таблица, содержащая ряд очень широких текстовых или BLOB-столбцов, к которым не обращаются, которые часто разбиваются на две таблицы с столбцами, на которые чаще всего ссылаются в одной таблице, и < strong>редко упоминаемый текст или данные BLOB в другом

Скопировано с http://mysql.localhost.net.ar/tech-resources/articles/performance-partitioning.html

person Patruni Srikanth    schedule 30.11.2013
comment
Мертвая ссылка, к сожалению. - person SQB; 30.03.2016