2012-01-20 13 views
10

Esta es la continuación de mi anterior pregunta: Blob and Storage RequirementMYSQL TINYBLOB vs LONGBLOB

hice algunas pruebas usando SHOW TABLE STATUS, y descubrí que el espacio total en disco utilizado en realidad sólo depende del tamaño de los archivos reales cargado en el base de datos y no en el tipo (por ejemplo, TINYBLOB o LONGBLOG) de la columna.

Entonces, si ese no es el caso, ¿qué diferencia hay cuando elegimos uno sobre otro de los tipos BLOB?

Respuesta

21

Cada tamaño del campo de blob reserva bytes adicionales para contener información de tamaño. Un bloque largo utiliza 4 + n bytes de almacenamiento, donde n es el tamaño real del blob que está almacenando. Si solo está almacenando (digamos) 10 bytes de datos de blob, estaría utilizando hasta 14 bytes de espacio.

En comparación, un tinyblob usa 1 + n bytes, por lo que sus 10 bytes ocuparían 11 bytes de espacio, un ahorro de 3 bytes.

3 bytes no es mucho cuando se trata de unos pocos registros, pero a medida que crecen los registros de DB, cada byte guardado es algo bueno.

+0

Exactamente lo que quería saber. Aceptado (bueno, en realidad tendré que esperar 8 minutos). – jombie

+6

Una adición rápida a esta respuesta: los 3 bytes guardados no solo se trata de ahorrar espacio en el disco. También afecta la cantidad que cabe en la memoria, en cachés, etc. por lo que también puede tener un impacto en el rendimiento. –

+0

@MarcB, ¿Su respuesta se refiere al motor InnoDB o al motor MyISAM? Además, ¿tienes una fuente/cita? – Pacerier