El formato de almacenamiento dinámico se usa si una tabla
          MyISAM contiene alguna columna de longitud
          variable (VARCHAR, BLOB,
          o TEXT), o si la tabla se crea con la
          opción ROW_FORMAT=DYNAMIC .
        
Este formato es un poco más complejo ya que cada columna tiene una cabecera que indica la longitud. Un registro puede acabar en más de una localización cuando es alarga como resultado de una actualización.
          Puede usar OPTIMIZE TABLE o
          myisamchk para defragmentar una tabla. Si
          tiene columnas de longitud fija a las que accede o cambia
          frecuentemente en una tabla que también contenga alguna
          columna de longitud variable, puede ser buena idea mover las
          columnas de longitud variable a otras tablas para evitar
          fragmentación.
        
Características generales de tablas de formato dinámico:
Todas las columnas de cadenas de carácteres son dinámicas excepto aquéllas con longitud menor a cuatro.
              Cada registro viene precedido por un bitmap que indica
              qué columnas contienen la cadena vacía (para columnas de
              cadenas) o cero (para columnas numéricas). Tenga en
              cuenta que esto no incluye columnas que contienen valores
              NULL. Si una columna de cadena de
              carácteres tiene una longitud de cero tras eliminar los
              espacios en blanco finales, o una columna numérica tiene
              un valor de cero, se marca en el bitmap y no se guarda en
              disco. Las cadenas no vacías se guardan como un byte de
              longitud más al de los contenidos de la cadena.
            
Para tablas de longitud fija normalmente se necesita mucho menos espacio de disco.
              Cada registro usa sólo tanto espacio como necesita. Sin
              embargo, si un registro crece, se divide en tantos trozos
              como haga falta, resultando en una fragmentación de
              registro. Por ejemplo, si actualiza un registro con
              información que alarga la longitud del registro, el
              registro se fragmenta. En este caso, puede que tenga que
              ejecutar OPTIMIZE TABLE o
              myisamchk -r de vez en cuando para
              mejorar el rendimiento. Use myisamchk
              -ei para obtener estadísticas de tabla.
            
Más difícil de reconstruir tras un fallo que las tablas de formato estático, ya que los registros pueden fragmentarse en varios trozos y puede faltar algún enlace (fragmento).
La longitud de registro esperada para registros de longitud dinámica se calcula usando la siguiente expresión:
3 + (número de columnas+ 7) / 8 + (número de columnas de carácteres) + (tamaño comprimido de columnas de cadenas) + (longitud de cadenas) + (número de columnas NULL+ 7) / 8
Hay una penalización de 6 bytes para cada enlace. Un registro dinámico se enlaza si una actualización provoca aumentar el tamaño de un registro. Cada nuevo enlace es al menos de 20 bytes, así que la siguiente ampliación probablemente irá en el mismo enlace. Si no es así, se crea otro enlace. Puede encontrar el número de enlaces usando myisamchk -ed. Pueden eliminarse todos los enlaces con myisamchk -r.
É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.

