[+/-]
      MyISAM é o tipo de tabela padrão no MySQL
      Versão 3.23. Ela é baseada no código ISAM e
      possui várias extensões úteis.
    
      O índice é armazenado em um arquivo com extensão
      .MYI (MYIndex), e os dados são armazenados
      em um arquivo com a extensão .MYD (MYData).
      Você pode verificar/reparar tabelas MyISAM com
      o utilitário myisamchk. See
      Secção 4.5.6.7, “Uso do myisamchk para Recuperação em Caso de Falhas”. Você pode compactar tabelas
      MyISAM com myisampack para
      utilizar menos espaço. See Secção 4.8.4, “myisampack, O Gerador de Tabelas Compactadas de
        Somente Leitura do MySQL”. O itens
      seguintes são novos no MyISAM:
    
          Existe um parâmetro no arquivo MyISAM que
          indica se a tabela foi fechada corretamente. Se o
          mysqld é iniciado com
          --myisam-recover, tabelas
          MyISAM serão automaticamente verificadas
          e/ou reparadas na abertura se a tabela não foi fechada
          apropriadamente.
        
          Você pode INSERIR novas linhas em uma
          tabela que não tenha blocos livres no meio do arquivo de
          dados, na mesma hora outras threadas são lidas da tabela
          (inserção concorrente). Um bloco livre pode vir de uma
          atualização de uma linha de tamanho dinâmico com muitos
          dados para uma linha com menos dados ou ao deletarmos linhas.
          Quando todos os blocos livres são usados, todas as
          inserções futurs serão concorrentes de novo.
        
Suporte a grandes arquivos (63-bit) em sistema de arquivos/sistemas operacionais que suportam grandes arquivos.
Todo dado é armazenado com byte mais baixo primeiro. Isto torna a máquina e SO independentes. A única exigência para a portabilidade do arquivo binário é que a a máquina utilize inteiros com sinais em complemento de dois (como toda a máquina nos últimos 20 anos tem) e formato de pontos flutuante IEEE (também totalmente dominante entre máquinas mainstream). A única área de máquinas que não podem suportar compatibilidade binária são sistemas embutidos (porque eles, algumas vezes, tem processadores peculiares).
Não há uma grande perda de velocidade em armazenar o byte mais baixo de dados primeiro; os bytes em um registro de tabela estão normalmente desalinhados e isto não dá muito poder de leitura do byte desalinhado em outra ordem além da ordem reversa. O código atual busca-valor-coluna também não é crítico em relação ao tempo comparado a outro código.
Todas as chaves numéricas estão armazendas com o byte mais alto em primeiro para conseguir melhor compactação do índice.
          Tratamento interno de uma coluna
          AUTO_INCREMENT. MyISAM
          irá atualizá-lo automaticamenteem um
          INSERT/UPDATE. O valor
          AUTO_INCREMENT pode ser zerado com
          myisamchk. Ele fará colunas
          AUTO_INCREMENT mais rápidas (pelo menos
          10%) e números natigos não irão reutilizar como no antigo
          ISAM. Note que quando um
          AUTO_INCREMENT é definido no fim de uma
          chave multi-parte o comportamento antigo ainda está presente.
        
          Ao inserir ordenandamente (como quando se utiliza colunas
          AUTO_INCREMENT) a árvore chave será
          separada de forma que o nodo mais alto contenha apenas uma
          chave. Isto irá aumentar a utilização de espaço na árvore
          de chaves.
        
          Colunas BLOB e TEXT
          podem ser indexados.
        
          Valores NULL são perimitidos em colunas
          indexadas. Isto gasta 0-1 bytes/chave.
        
O tamanho máximo da chave é de 500 bytes por padrão (pode ser alterado recomopilando). No caso de chaves maiores que 250 bytes, um tamanho de bloco de chave maior que o padrão de 1024 bytes é usado para esta chave.
          Número máximo de chaves/tabelas é 32 por padrão. Isto pode
          ser aumentado para 64 sem ser necessário recompilar
          myisamchk.
        
          myisamchk marcará as tabelas como
          verificadas se alguém executá-las sem
          --update-state. myisamchk
          --fast só verificará aquelas tabelas que não
          tenham esta marca.
        
          myisamchk -a armazena estatísticas para
          partes de chaves(e não apenas para toda a chave como no
          ISAM).
        
Linhas de tamanho dinâmico serão agora muito menos fragmentados quando misturar deleções com atualizações e inserções. Isto é feito combinando automaticamente blocos deletados adjacentes e extendendo blocos se o próximo bloco é deletado.
          myisampack pode empacotar colunas
          BLOB e VARCHAR.
        
          Você pode colocar arquivos de dados e índices em diretórios
          diferentes para obter maior velocidade (com a opção
          DATA/INDEX DIRECTORY="caminho" para
          CREATE TABLE). See
          Secção 6.5.3, “Sintaxe CREATE TABLE”.
        
      MyISAM também suporta os seguintes itens, os
      quais o MySQL estará apto a utilizar em um futuro próximo:
    
          Suporte a tipos VARCHAR reais; uma coluna
          VARCHAR inicia com um tamanho armazenado em
          2 bytes.
        
          Tabelas com VARCHAR podem ter um registro
          de tamanho fixo ou dinâmico.
        
          VARCHAR e CHAR podem ser
          maior que 64K. Todos os segmentos de chaves têm a sua
          própria definição de linguagem. Isto habilitará o MySQL
          para ter diferentes definições de linguagens por coluna.
        
          Um índice computado em hash pode ser usado para
          UNIQUE. Isto lhe permitirá ter
          UNIQUE em qualquer combinação de colunas
          na tabela. (Você não pode procurar em um em um índice
          computado UNIQUE, de qualquer forma.)
        
      Note que os arquivos de índice são muito menores com
      MyISAM que com ISAM. Isto
      significa que MyISAM usará normalmente menos
      recursos do sistema que ISAM, mas precisará de
      mais tempo de CPU quando inserir dados em um índice compactado.
    
      As seguintes opções para mysqld podem ser
      usadas para alterar o comportamento de tabelas
      MyISAM. See Secção 4.6.8.4, “SHOW VARIABLES”.
    
| Opção | Descrição | 
| --myisam-recover=# | Recuperação automática de tabelas com falhas. | 
| -O myisam_sort_buffer_size=# | Buffer utilizado ao recuperar tabelas. | 
| --delay-key-write=ALL | Não desarrega buffers de chaves entre escritas para qualquer tabela MyISAM | 
| -O myisam_max_extra_sort_file_size=# | Usada paa ajudar o MySQL a decidir quando utilzar o método lento, mas seguro, de criação de índices de cache de chaves. Note este parâmetro é dado em megabytes antes da versão 4.0.3 e em bytes a partir desta versão. | 
| -O myisam_max_sort_file_size=# | Não utilzia o método rápido de ordenação de índice para criar índices se o arquivo temporário se tornasse maior que o valor dado. Note que este parâmetro é dado em megabytes antes da versão 4.0.3 e em bytes a partir desta versão. | 
| -O bulk_insert_buffer_size=# | Tamanho da arvore cache utilizado na otimização de inserções em bloco. Note que este é um limite por thread! | 
      A recuperação automática é ativada se você iniciar o
      mysqld com --myisam-recover=#.
      See Secção 4.1.1, “Opções de Linha de Comando do mysqld”. Na abertura, é verificado
      se a tabela está marcada como quebrada ou se a variavel de
      contagem de abertura para esta tabela não é 0 e você a está
      executando com --skip-external-locking. Se
      nenhuma das verificações acima forem verdadeiras o seguinte
      ocorre.
    
Verifica-se se a tabela possui erros.
Se encontrarmos um erro, tente fazer um reparação rápida (com ordenação e sem recriar o arquivo de dados) da tabela.
Se o reparação falhar devido a um erro no arquivo de dados (por exemplo um erro de chave duplicada), é feita uma nova tentativa, mas desta vez o arquivo de dados é recriado.
Se a reparação falhar, tente mais uma vez com o antigo método de opção de reparação (escrever linha a linha sem ordenação) o qual deve estar apto a reparar qualquer tipo de erros com pequenas exigências de disco.
      Se a recuperação não estiver apta a recuperar todas as linhas
      de uma instrução completada previamente e você não especificou
      FORCE como uma opção para
      myisam-recover, então a reparação
      automática abortará com uma mensagem de erro no arquivo de
      erros:
    
Error: Couldn't repair table: test.g00pages
      Caso você tenha utilizado a opção FORCE,
      você irá obter um aviso no arquivo de erro:
    
Warning: Found 344 of 354 rows when repairing ./test/g00pages
      Note que se você executar uma recuperação automática com a
      opção BACKUP, você deve ter um script
      cron que mova automaticamente arquivos com nome
      como tablename-datetime.BAK do diretório de
      banco de dados para uma media de backup.
    
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.

