Este formato é usado se a tabela contém colunas
          VARCHAR, BLOB ou
          TEXTou se as tabelas são criadas com
          ROW_FORMAT=dynamic.
        
Este formato é um pouco mais complexo porque cada linha tem que ter um cabeçalho que diz o seu tamanho. Um registro também pode acabar em mais de um local quando fica maior em uma atualização.
          Você pode utilizar OPTIMIZE tabela ou
          myisamchk para desfragmentar uma tabela. Se
          você tiver dados estáticos que você acessa/altera demias na
          mesma tabela, como alguma coluna VARCHAR ou
          BLOB, pode ser uma boa idéia mover as
          colunas dinâmicas para outra tabela apenas para evitar
          fragmentação.
        
Todas as colunas string são dinâmicas (exceto aquelas com tamanho menor que 4).
              Cada registro é precedido por um mapa de bits indicando
              quais colunas estão vazias ('') para
              colunas string ou zero para colunas numéricas (Isto é
              diferente de colunas contendo valores
              NULL). Se uma coluna de string tem um
              tamanho de zero depois da remoção de espaços extras, ou
              uma coluna numérica tem um valor de zero, isto é marcado
              no mapa de bits e não é salvado em disco. Strings não
              vazias são salvas como um byte de tamanho mais o conteudo
              da string.
            
Geralmente utiliza muito menos espaço de disco que tabelas de tamanho fixo.
Cada registro utiliza apenas o espeço necessário. Se um registro aumenta, ele é separado em varios pedaços, de acordo com a necessidade. Isto resulta em fragmentação do registro.
              Se você atualiza uma linha com informações que
              ultrapassam o seu tamanho, a linha será fragmentada.
              Neste caso, você pode precisar executar
              myisamchk -r de tempos em tempos para
              obter melhor performance. Use myisamchk -ei
              nome_tabela para algumas estatísticas.
            
Não é fácil de recontruí-la após uma falha, pois um registro pode ser fragmentado em muitos pedaços e um link (fragmento) pode ser perdido.
O tamanho esperado para registros de tamanho dinâmico é:
3 + (número de colunas + 7) / 8 + (número de colunas char) + tamanho empacotado de colunas numéricas + tamanho das strings + (número de colunas NULL + 7) / 8
              Existe uma penalidade de 6 bytes para cada link. Um
              registro dinâmico é ligado sempre que uma atualização
              causa um aumento do registro. Cada novo link terá pelo
              menos 20 bytes, assim o próximo aumento estará,
              provavelemente, no mesmo link. Se não, haverá outro
              link. Você pode checar quantos links existem com
              myisamchk -ed. Todos os links podem ser
              removidos com myisamchk -r.
            
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

