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
MyISAM
es 65,534 bytes. Cada columna
BLOB
y TEXT
cuenta sólo de
cinco a nueve bytes más alla de su tamaño.
Si una tabla MyISAM
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 |
TINYINT
|
1 byte |
SMALLINT
|
2 bytes |
MEDIUMINT
|
3 bytes |
INT , INTEGER |
4 bytes |
BIGINT
|
8 bytes |
FLOAT( p ) |
4 bytes si 0 <= p <= 24, 8 bytes si 25
<= p <= 53 |
FLOAT
|
4 bytes |
DOUBLE [PRECISION] , objeto REAL |
8 bytes |
DECIMAL( M ,D ),
NUMERIC( M ,D ) |
Varía; consulte la siguiente explicación |
BIT( M ) |
aproximadamente (M +7)/8 bytes |
Los requerimientos de almacenamiento para
DECIMAL
(y NUMERIC
) son
específicos para cada versión:
Desde MySQL 5.0.3, los valores para columnas
DECIMAL
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 DECIMAL
se
representan como cadenas y el requerimiento de almacenamiento es:
M
+2 bytes si
D
> 0,
M
+1 bytes si
D
= 0 (D
+2,
si M
<
D
)
Requerimientos de almacenamiento para tipos de fecha y hora
Tipo de columna | Almacenamiento requerido |
DATE
|
3 bytes |
DATETIME
|
8 bytes |
TIMESTAMP
|
4 bytes |
TIME
|
3 bytes |
YEAR
|
1 byte |
Requerimientos de almacenamiento para tipos de cadenas de carácteres
Tipo de columna | Almacenamiento requerido |
CHAR( M ) |
M bytes, 0 <=
M <= 255 |
VARCHAR( M ) |
L +1 bytes, donde
L <=
M y 0 <=
M <= 255 |
BINARY( M ) |
M bytes, 0 <=
M <= 255 |
VARBINARY( M ) |
L +1 bytes, donde
L <=
M y 0 <=
M <= 255 |
TINYBLOB , TINYTEXT |
L +1 byte, donde L
< 2^8 |
BLOB , TEXT |
L +2 bytes, donde L
< 2^16 |
MEDIUMBLOB , MEDIUMTEXT |
L +3 bytes, donde L
< 2^24 |
LONGBLOB , LONGTEXT |
L +4 bytes, donde L
< 2^32 |
ENUM(' value1 ','value2 ',...) |
1 o 2 bytes, dependiendo del número de valores de la enumeración (65,535 valores como máximo) |
SET(' value1 ','value2 ',...) |
1, 2, 3, 4, o 8 bytes, dependiendo del número de miembros del conjunto (64 miembros como máximo) |
Los tipos VARCHAR
y BLOB
y
TEXT
son de longitud variable. Para cada uno,
los requerimientos de almacenamiento depende de la longitud de los
valores de la (representados por L
en
la tabla precedente), en lugar que el tamaño máximo del tipo.
Por ejemplo, una columna VARCHAR(10)
puede
tratar una cadena con una lengitud máxima de 10. El
almacenamiento requerido real es la longitud de la cadena
(L
), más 1 byte para registrar la
longitud de la cadena. Para la cadena 'abcd'
,
L
es 4 y el requerimiento de
almacenamiento son 5 bytes.
Para los tipos CHAR
,
VARCHAR
, y TEXT
, los valores
L
y M
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 TINYTEXT
necesita L
carácteres + 1 byte.
Desde MySQL 5.0.3, el motor NDBCLUSTER
soporta
sólo columnas de longitud fija. Esto significa que una columna
VARCHAR
de una tabla en MySQL Cluster se
comportará casi como si fuera de tipo CHAR
(excepto que cada registro todavía tiene un byte extra). Por
ejemplo, en una tabla Cluster, cada registro
en una columna declarada como VARCHAR(100)
necesitará 101 bytes para almacenamiento, sin tener en cuenta la
longitud de la columna almacenada en cualquier registro.
Los tipos BLOB
y TEXT
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 BLOB
y TEXT
”.
Las columnas TEXT
y BLOB
se
implementan de forma distinta en el motor de almacenamiento NDB
Cluster , donde cada registro en una columna
TEXT
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
TEXT
es 256 si size
<= 256 (donde size
representa el
tamaño del registro); de otro modo, el tamaño es 256 +
size
+ (2000 -
(size
- 256) % 2000).
El tamaño de un objeto ENUM
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 ENUM
”.
El tamaño de un objeto SET
se determina por el
número de diferentes mienbros del conjunto. Si el tamaño del
conjunto es N
, el objeto ocupa
(
N
+7)/8 bytes,
redondeado a 1, 2, 3, 4, o 8 bytes. Un SET
puede tener como máximo 64 miembros. Consulte
Sección 11.4.5, “El tipo SET
”.