É verdade que o motor MyISAM é mais preferível do que InnoDB quando estamos construindo armazenamento em cluster? Porque se for assim?

StackOverflow https://stackoverflow.com/questions/1647023

Pergunta

Eu ouvi isso hoje durante entrevista para desenvolvedor java. Eu tive que lista algumas vantagens de MyISAM sobre InnoDB e por que ele está ainda a ser amplamente utilizado. E eles estavam esperando para ouvir de mim a resposta como o título desta questão.

Como eu entendo a partir de sua própria resposta: MyISAM não tem chaves estrangeiras e DB pode ser facilmente agrupado (uma tabela por servidor, por exemplo). Mas por que não podemos simplesmente criar tabelas InnoDB sem chaves estrangeiras? Esta explicação soa estranho para mim ..

Foi útil?

Solução

Não há uma resposta bala de prata aqui. Você precisa saber os prós e contras de cada um antes de tomar uma decisão sobre qual você usa para qualquer aplicação em particular.

InnoDB:

  • suporta do FK
  • suporta transações
  • usa um buffer de memória grande para a operação
  • bloqueio suportes nível de linha
  • Mas tem um custo de manutenção muito mais elevado -. Você realmente precisa para sintonizar o seu uso de memória, configurar seus arquivos de mesa, etc

MyISAM:

  • tem um monte de coluna especial características que InnoDB não, como:
    • índices de texto completo
    • Colunas Espaciais (eu tenho certeza que isso não funciona com InnoDB)
  • Muito rápido para leitura primária / Anexar casos de uso (bloqueios de tabela para atualizações, exclusões, mas não para inserções)
  • Também normalmente tem inserções mais rápidas
  • armazena índices na memória (buffer de chaves), mas depende do sistema operacional para tamponar as páginas de dados reais

Por exemplo, eu uso InnoDB para coisas como comércio eletrônico, bancos de dados usuário ou qualquer coisa que eu quero transações de uso em.

Para armazéns de dados, registro, comunicação, etc eu provavelmente usar MyISAM.

Outras dicas

Eu tinha que listar algumas vantagens de MyISAM sobre InnoDB

  1. pesquisa de texto completo

  2. ...

  3. Não, é isso.

(OK, existem alguns casos em que MyISAM é mais rápido do que o InnoDB, mas raramente o suficiente para que vale a pena colocar-se com a falta de ácido cumprimento. Hoje a principal razão para fazer qualquer coisa com MyISAM é para obter pesquisa de texto completo que, infelizmente, não é suportado no InnoDB.)

Eu não tenho certeza se isso não é mais verdade MyISAM é mais rápido que o InnoDB para leituras.

Além disso, tabelas MyISAM são armazenados em arquivos separados e (pelo que eu me lembro) você pode realmente transportar esses arquivos para outro banco de dados MySQL e é mais fácil de backup.

Por padrão bancos de dados InnoDB são armazenadas em um enorme glob no sistema de arquivos.

Quanto a isso ainda está sendo amplamente utilizado, eu sempre achei que era porque ele é a opção padrão. Pessoalmente, eu ainda acredito que as vantagens do InnoDB triunfos MyISAM e MyISAM também tem problemas com a integridade dos dados da minha experiência.

Você certamente poderia criar tabelas InnoDB sem chaves estrangeiras, mas que está cortando uma das principais vantagens do mesmo: a integridade referencial. No entanto, desde MyISAM não é construído com a intenção de chaves de tabela integridade referencial pode ser armazenada de forma diferente, e talvez de forma mais eficiente.

Existem também algumas diferenças de bloqueio e acesso. InnoDB suporta fileira de bloqueio nível, enquanto que MyISAM suporta apenas o bloqueio ao nível da tabela. Dependendo das consultas que você está executando (Seleciona contra inserções / atualizações) isso pode ter um efeito notável no desempenho.

Você prolly precisa ler-se na Mysql Peformance blogue .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top