MYSQL TINYBLOB против LONGBLOB

Это продолжение моего предыдущего вопроса: Требования к блокам и хранилищу

Я провел некоторое тестирование с использованием SHOW TABLE STATUS и выяснил, что общее используемое пространство на диске зависит только от размера фактических файлов, загруженных в базу данных, а не от типа (например, TINYBLOB или LONGBLOG) столбца.

Итак, если это не так, то какая разница делает, когда мы выбираем один из других типов BLOB?

Ответ 1

Каждый размер поля blob резервирует дополнительные байты для хранения информации о размере. Longblob использует 4 + n байтов хранения, где n - фактический размер сохраняемого вами блоба. Если вы только сохраняете (скажем) 10 байт данных blob, вы должны использовать до 14 байтов пространства.

Для сравнения, tinyblob использует 1 + n байтов, поэтому ваши 10 байтов занимают 11 байтов пространства, 3 байта.

3 байта не так много при работе с несколькими записями, но по мере того, как количество записей в БД растет, каждый сохраненный байт - хорошая вещь.