Требования к BLOB-объектам и хранилищу

У меня есть требование хранить файлы, загруженные пользователем, в базу данных (файловая система не вариант).

Загружаемые файлы бывают разных типов (например, PDF, EXCEL и т. Д.).

У меня проблема с принятием решения, использовать ли MEDIUMBLOB в качестве типа для хранения этих файлов как двоичных данных.

И путаница возникает из-за того, что размер этих файлов сильно различается. Например, некоторые файлы имеют размер несколько сотен килобайт (например, 114 КБ), но некоторые другие имеют размер до 1,5 мегабайт.

Поэтому мне действительно нужно использовать MEDIUMBLOB в качестве типа столбца. Но у меня небольшая путаница, поскольку фактически занимаемая память зависит от размера самого загруженного файла или размер самого файла игнорируется, а память просто выделяется в зависимости от типа данных . Это действительно важно, потому что большинство файлов, которые будут загружаться каждый день (многие из них), будут действительно маленькими по размеру, а память (пространство), доступная на диске, ограничена.

Когда я читал следующий раздел документа MySql:

10.5. Требования к хранению типов данных

L представляет собой фактическую длину в байтах заданного строкового значения.

Data type                  Storage Required
========================================================
TINYBLOB, TINYTEXT  L + 1 bytes, where L < 2 ^ 8
BLOB, TEXT           L + 2 bytes, where L < 2 ^ 16
MEDIUMBLOB, MEDIUMTEXT  L + 3 bytes, where L < 2 ^ 24
LONGBLOB, LONGTEXT  L + 4 bytes, where L < 2 ^ 32

Я думаю, что используемая память зависит от размера загружаемого файла. т.е.Если у меня есть тип столбца MEDIUMBLOB , и если я загружу файл размером 114 КБ, то будет использоваться только 114 КБ + 3 байта дисковой памяти, а не (2 ^ 24) байта + 3 байта .

Я правильно думаю? Или я буду тратить много дисковой памяти, сохраняя много файлов (размером от 100 до 300 КБ) в поле MEDIUMBLOB .

11
задан Sibbo 20 January 2012 в 17:28
поделиться