Должен ли я разделить таблицу с данными большого размера? - PullRequest
0 голосов
/ 17 июля 2011

Я использую MySQL. Мне нужно сохранить содержимое файла XML в базу данных. Размер файла обычно меньше 10 КБ.

Таблица выглядит так:

articles
-----------
id
date
writer
...
file_name
file_content (Text)
file_date

Улучшает ли разбиение таблицы производительность, когда я выбираю date и writer? Или есть какая-то другая причина разбить эту таблицу?

1 Ответ

3 голосов
/ 17 июля 2011

Это называется вертикальным разделением.

В основном, если ваш общий набор данных очень большой (скажем, больше, чем RAM), и большинство ваших запросов не используют большие данные file_content, помещая их в другую таблицусделает основную таблицу намного меньше, поэтому лучше кэшируется в ОЗУ и намного, намного быстрее.

Конечно, получение file_content будет немного медленнее, поэтому зависит от того, как часто вы его используете.

Я использовал эту технику на форуме.Я сохранил текст сообщений (bbcode, проанализированный в HTML) в основной таблице, а исходные сообщения (в bbcode) - в другой таблице.При отображении страниц форума отображается только основная таблица.Оригинальный текст сообщения используется только для редактирования сообщений.Это делило размер таблицы сообщений на 2 и избавляло от необходимости удваивать объем оперативной памяти на этом сервере.

...