2011-06-27 19 views
6

estoy usando InnoDB Plugin en el formato de archivo con Barracuda:Complemento MySQL/InnoDB: ¿Los valores NULL para los campos VARCHAR aún ocupan espacios de almacenamiento?

ROW_FORMAT=DYNAMIC

Si define un campo como VARCHAR(255), y luego insertar un registro que tiene un valor NULL para ese campo, lo hará ese registro todavía utilizar 255 bytes de almacenamiento para el campo VARCHAR? ¿O no habrá espacio de almacenamiento desperdiciado?

En una nota relacionada, si defino un campo como INT, entonces presumiblemente cada registro seguirá usando 32 bits para ese campo, incluso si el valor es NULL. ¿Es eso correcto?

Gracias

Respuesta

6

creo que esto debería responder a su pregunta -

Un NULL SQL reservas de valor uno o dos bytes en el directorio de registro. Además de eso, un valor SQL NULL reserva cero bytes en la parte de datos del registro si se almacena en una columna de longitud variable. En una columna de longitud fija, reserva la longitud fija de la columna en la parte de datos del registro. La reserva del espacio fijo para valores NULL permite que se realice una actualización de la columna de NULL a un valor no nulo sin causar la fragmentación de la página de índice.

Por favor, consulte más acerca de data-type storage requirements y InnoDB physical row structure

Cuestiones relacionadas