11.5. Requisitos de almacenamiento según el tipo de columna

MySQL 5.0

11.5. Requisitos de almacenamiento según el tipo de columna

Los requerimientos de almacenamiento para cada uno de los tipos de columnas soportados por MySQL se listan por categoría.

El máximo tamaño de un registro en una tabla es 65,534 bytes. Cada columna y cuenta sólo de cinco a nueve bytes más alla de su tamaño.

Si una tabla incluye cualquier tipo de columna de tamaño variable, el formato de rebistro también tiene longitud variable. Cuando se crea una tabla. MySQL puede, bajo ciertas condiciones, cambiar una columna de tamaño variable a fijo o viceversa. Consulte Sección 13.1.5.1, “Cambios tácitos en la especificación de columnas” para más información.

Requerimientos de almacenamiento para tipos numéricos

Tipo de columna Almacenamiento requerido
1 byte
2 bytes
3 bytes
, 4 bytes
8 bytes
) 4 bytes si 0 <= <= 24, 8 bytes si 25 <= <= 53
4 bytes
, objeto 8 bytes
,), ,) Varía; consulte la siguiente explicación
) aproximadamente (+7)/8 bytes

Los requerimientos de almacenamiento para (y ) son específicos para cada versión:

Desde MySQL 5.0.3, los valores para columnas más largos se representan usando un formato binario que empaqueta nueve dígitos decimales en cuatro bytes. El almacenamiento para la parte entera y fraccional se determinan separadamente. Cada múltiplo de nueve dígitos requiere cuatro bytes, y el dígito "de resto" requiere alguna fracción de cuatro bytes. El almacenamiento requerido para los dígitos "de resto" se da en la siguiente tabla:

Resto Número
Dítigos de bytes
0 0
1 1
2 1
3 2
4 2
5 3
6 3
7 4
8 4
9 4

Antes de MySQL 5.0.3, las columnas se representan como cadenas y el requerimiento de almacenamiento es: +2 bytes si > 0, +1 bytes si = 0 (+2, si < )

Requerimientos de almacenamiento para tipos de fecha y hora

Tipo de columna Almacenamiento requerido
3 bytes
8 bytes
4 bytes
3 bytes
1 byte

Requerimientos de almacenamiento para tipos de cadenas de carácteres

Tipo de columna Almacenamiento requerido
) bytes, 0 <= 255
) +1 bytes, donde <= y 0 <= 255
) bytes, 0 <= 255
) +1 bytes, donde <= y 0 <= 255
, +1 byte, donde < 2^8
, +2 bytes, donde < 2^16
, +3 bytes, donde < 2^24
, +4 bytes, donde < 2^32
','',...) 1 o 2 bytes, dependiendo del número de valores de la enumeración (65,535 valores como máximo)
','',...) 1, 2, 3, 4, o 8 bytes, dependiendo del número de miembros del conjunto (64 miembros como máximo)

Los tipos y y son de longitud variable. Para cada uno, los requerimientos de almacenamiento depende de la longitud de los valores de la (representados por en la tabla precedente), en lugar que el tamaño máximo del tipo. Por ejemplo, una columna puede tratar una cadena con una lengitud máxima de 10. El almacenamiento requerido real es la longitud de la cadena (), más 1 byte para registrar la longitud de la cadena. Para la cadena , es 4 y el requerimiento de almacenamiento son 5 bytes.

Para los tipos , , y , los valores y en la tabla precedente debe interpretarse como números de carácteres en MySQL 5.0, y las longitudes para estos tipos en las especificaciones de la colmna indican el número de carácteres. Por ejemplo, para almacenar un valor necesita carácteres + 1 byte.

Desde MySQL 5.0.3, el motor soporta sólo columnas de longitud fija. Esto significa que una columna de una tabla en MySQL Cluster se comportará casi como si fuera de tipo (excepto que cada registro todavía tiene un byte extra). Por ejemplo, en una tabla Cluster, cada registro en una columna declarada como necesitará 101 bytes para almacenamiento, sin tener en cuenta la longitud de la columna almacenada en cualquier registro.

Los tipos y requieren 1, 2, 3, o 4 bytes para almacenar la longitud de la columna, dependiendo de la longitud máxima posible del tipo. Consulte Sección 11.4.3, “Los tipos y .

Las columnas y se implementan de forma distinta en el motor de almacenamiento NDB Cluster , donde cada registro en una columna se compone de dos partes separadas. Una de estas es de longitud fija (256 bytes), y se almacena realmente en la tabla original. La otra consiste de cualquier dato de más de 256 bytes, que se almacena en una tabla oculta. Los registros en esta segunda tabla siempre tienen una longitud de 2,000 bytes . Esto significa que el tamaño de una columna es 256 si <= 256 (donde representa el tamaño del registro); de otro modo, el tamaño es 256 + + (2000 - ( - 256) % 2000).

El tamaño de un objeto lo determina el número de diferentes valores de la enumeración. Un byte se usa para enumeraciones de hasta 255 valores posibles. Dos bytes se usan para enumeraciones teniendo entre 256 y 65,535 valores posibles. Consulte Sección 11.4.4, “El tipo de columna .

El tamaño de un objeto se determina por el número de diferentes mienbros del conjunto. Si el tamaño del conjunto es , el objeto ocupa +7)/8 bytes, redondeado a 1, 2, 3, 4, o 8 bytes. Un puede tener como máximo 64 miembros. Consulte Sección 11.4.5, “El tipo .