Mysql almacenará 5 bytes más un byte para la longitud. Si el varchar es mayor que 255, almacenará 2 bytes para la longitud.
Tenga en cuenta que esto depende del juego de caracteres de la columna. Si el conjunto de caracteres es utf8, mysql requerirá hasta 3 bytes por carácter. Algunos motores de almacenamiento (es decir, la memoria) siempre requerirán la longitud máxima de bytes por carácter para el juego de caracteres.
Hacer que una columna sea anulable significa que mysql tendrá que reservar un byte adicional por hasta 8 columnas anulables por fila. Esto se llama "máscara nula".
¡Ni siquiera es consistente entre los motores de almacenamiento dentro de mysql!