@adelina_turcan
Люблю программировать

Как MySQL сохраняет данные?

Вопрос о том как MySQL занимает место на диске, и о правильном выборе типа данных.

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

title: VARCHAR(250)
content: TEXT

Из этих статей:

  • 30% имеют текст меньше 1000 символов
  • 30% больше 1000 и меньше 5000
  • остальные больше 5000

Если сделать 3 таблицы, и в каждой указать content равный нужной длинне, MySQL займёт меньше место на диске?

То есть MySQL резервирует "максимальное" место под каждый ряд? Или занимает место только под те данные которые имеет на текущий момет?
  • Вопрос задан
  • 193 просмотра
Решения вопроса 2
longclaps
@longclaps
Если делать по 3 однотипных таблицы вместо одной, можно в один прекрасный день угодить в дурку. Не стоит так рисковать.
Типы данных TEXT придуман нам во спасение.
Ответ написан
tsklab
@tsklab
Системный администратор, программист
В общем случае значения переменной длины будут занимать только нужное им место (плюс незаполненные остатки страниц). Делать разные таблицы для разных размеров не нужно.

Данные хранятся страницами (обычно, по-умолчанию 8 Кбайт), поэтому ваша статья размером 5000 символов займёт страницу. Если будет чем занять свободное место, СУБД это сделает. Нет — так и будет неиспользованным. Конечно, это в первом, примитивном приближении. Конкретно реализация страничного хранения значительно сложнее чем простое линейное.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы