Hospedagem Host
Endereço de email:
Senha:
Se você não tem cadastro Clique Aqui
Perdeu sua senha? Clique Aqui
Tickets de Suporte
Clientes: Envie tickets
para suporte, pagamentos,
ou perguntas.

HospedagemHost
Base de Conhecimento
Bookmark and Share
Por favor Login or Registre
Você está aqui: Suporte > Base de Conhecimento > MySQL > Tabelas MyISAM

Tabelas MyISAM

 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.

    *      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 utilza 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.

 

 



Esta resposta lhe foi útil?

 

Veja também
Criar um Banco de Dados MySQL (Visualizações: 250)
MySQL Connect (Visualizações: 135)

Powered by WHMCompleteSolution

Quick Navigation

Suporte Suporte
Área do Cliente Área do Cliente
Anúncios Anúncios
Base de Conhecimento Base de Conhecimento
Enviar Ticket Enviar Ticket
Downloads Downloads
Pedido Pedido

Login Cliente

Email

Senha

Lembrar

Pesquisar



Siga-nos no Twitter