Los registros de las tablas InnoDB
tienen las
siguientes características:
Cada registro de índice en InnoDB
contiene un encabezado de seis bytes. El encabezado se
emplea para enlazar juntos registros consecutivos, y
también en el bloqueo a nivel de fila.
Los registros en el índice agrupado contienen campos para todas las columnas definidas por el usuario. Adicionalmente, hay un campo de seis bytes para el IDentificador de transacción y un campo de siete bytes para el roll pointer.
Si no se definió una clave primaria para la tabla, cada registro de índice agrupado contiene también un campo de IDentificación de fila de seis bytes.
Cada registro de índice secundario contiene también todos los campos definidos para la clave del índice agrupado.
Un registro contiene además un puntero a cada campo del mismo. Si la longitud total de los campos en un registro es menos de 128 bytes, el puntero medirá un byte, de lo contrario, tendrá dos bytes de longitud. La matriz de estos punteros se conoce como el directorio de registros. El área a donde señalan estos punteros se denomina la parte de datos del registro.
Internamente, InnoDB
almacena las
columnas de caracteres de longitud fija (como
CHAR(10)
) en un formato de longitud fija.
InnoDB
trunca los espacios sobrantes de
las columnas VARCHAR
. Nótese que MySQL
puede convertir internamente columnas
CHAR
a VARCHAR
.
Consulte Sección 13.1.5.1, “Cambios tácitos en la especificación de columnas”.
Un valor NULL
SQL reserva 1 o 2 bytes en
el directorio de registros. No reservará ningún byte en la
parte de datos del registro si se lo almacena en una columna
de longitud variable. En una columna de longitud fija,
reservará en la parte de datos la longitud asignada a dicha
columna. La razón por la que se reserva este espacio fijo a
pesar de tratarse de un valor NULL
, es
que en el futuro se podrá insertar en su lugar un valor
no-NULL
sin provocar la fragmentación de
la página de índice.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.