Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alepts

Diferença real entre MyISAM e InnoDB

Recommended Posts

Olá hoje estava estudando sobre MySQL, tenho algumas dúvidas que confesso me deixam com medo de criar tabelas!

 

A questão é: Quando usar MyISAM ou InnoDB, o que deve levar em conta?

 

Sobre o MyISAM pude perceber que é destinado a pouca escrita em banco, já que ele trabalha com lock table, mas até quantos cadastros este tipo é indicado? Estamos falando de quantos registros?

 

E o InnoDB a galera recomenda para grandes movimentações no banco porque ele em vantagem ao MyISAM utiliza lock row podendo executar uma quantidade de processos a mais. Porém dizem ser lento e ser vantajoso diante de inumeros registros, ou seja, base de dados gigantescas.

 

Não intendi muito bem o suporte do InnoDB em relação a rollback() e commit(), o que são estes dois recursos e referente Crach-Recovery, alguem poderia se pronunciar. Descrevendo diretamente para que servem e se possível utilizando um exemplo.

 

Agradeço desde já, e quem quiser explicar algo a mais sobre este assunto que não estejam na confusão acima, fique a vontade.

 

muito obrigado. :thumbsup:

 

Alguem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

As principais diferenças é que InnoDB possui recursos a mais, podemos citar:

- transações (onde você utiliza os comandos commit e rollback); e

- integridade referencial (as chaves estrangeiras).

 

Porém, todos esses controles a mais tornam as tabelas InnoDB levemente mais lentas que as tabelas MyISAM. Ah, mas são apenas "levemente mais lentas"? Então é mais vantajoso usar InnoDB. De fato, mas pense em milhares de inserts e selects diariamente. É aí que se deve avaliar, pq isto pode acabar refletindo em muitos minutos de processamento.

 

O MySQL tem uma característica bem interessante, InnoDB e MyISAM não são as únicas engines. E cada uma tem suas vantagens/limitações.

 

Para a maioria das aplicações comerciais, InnoDB será, quase sempre, melhor opção que MyISAM. Vale lembrar que num mesmo banco de dados você pode ter tabelas de ambos os tipos.

 

Existem alguns benchmarks de performance na web, mas como você mesmo já deve ter concluído, não é apenas performance que define o uso, na verdade o que vai definir é o seu projeto. É comum ver aplicações comerciais, como ERPs, de grandes empresas, que o banco de dados servem apenas como um repositório de informações e eles utilizam, em sua maioria, Oracle e SQL Server, colocando toda a regra de negócio na camada de aplicação. Sim, é plausível, mas neste caso poderia ser utilizado qualquer sistema de banco de dados, já que nenhuma característica ou tecnologia específica é requerida. Em contra partida, são sistemas de banco de dados encontrados na maioria das empresas de médio e grande porte, o que facilita sua implantação.

 

Tecnicamente, em que situações cada uma é melhor que a outra?

 

InnoDB

- Transações;

- Integridade referencial;

- Índice clusterizado;

- Lock em nível de linha;

 

MyISAM

- Busca textual (full-text search);

- Merge de tabelas (engine merge);

- Índices geoespacial;

- Lock em nível de tabela;

 

Cada uma das engines possui sua própria parametrização no sistema de banco de dados.

 

Este assunto não esta esgotado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.