Encontrado material bem legal sobre a principal diferença e estou postando hoje.
Saiba quais as diferenças entre estes dois tipos de tabelas do banco de dados MySQL
InnoDB
funciona mais rápido que MyISAM quando há modificações constantes
nos dados, uma vez que este tipo de armazenagem usa a proteção por
registros (row locking) e não a proteção por tabelas (table
locking) como o faz o MyISAM. Contudo, em várias situações, InnoDB
é mais lento que MyISAM, devido ao fato de que InnoDB funciona com
transações. A armazenagem padrão do MySQL é MyISAM. Outro ponto
interessante são as restrições de chaves estrangeiras (foreign key
constraints) e transações. Estes recursos estão disponíveis
apenas no InnoDB.
MyISAM
é apropriado para tabelas cujos dados não mudam com frequência. Um
exemplo disso é uma tabela de cidades e estados. Como geralmente
este tipo de tabela é usado apenas como consultas, não há a
necessidade do uso de InnoDB. MyISAM tem a vantagem de ser
arquivos simples se comparado com o innodb, mesmo na opção para
criar dentro do contexto, o arquivo fica instavel em volumes grandes,
o mito sobre configurar o mysql em
innodb está errado, VOCÊ SEMPRE DEVE CONFIGURAR O MYSQL, perfomace
de cache é sempre importante.
Considerar
também o uso de MYSQL 3, que é super mais leve, mas em
contra-partida não tem suporte a subselect, nunca deixe de usar
subselect, inner join, e counters. Repitir dados também não é um
erro, exemplo melhor: BIGTABLE do google, quando você tem counters,
vc tem counters mesmo, não queira varrer a tabela de pedidos toda
hora para ver quantos produtos sairam e entraram, você pode fazer
isso em uma rotina de backup, ou cada 10 min para ter certeza que
está ok, mas não para todo pedido de produto corrente. (isso vale
para qualquer modo)
O
Banco de dados também tem um limite se você deseja fazer um site
estilo americanas, ou mesmo o novo google, que dá quantos XX de item
tipo foi encontrado, o melhor a se fazer é usar um sistema de
indexação pronto para isso, exemplos clássicos são Lucene (Usado
no Hibernate e na maioria dos EJB), Solr, HBase (esse ultimo é mais
usado com Hadoop, no esquema MAP/REDUCE), como assim, não usar o
banco? é claro que você vai ter um banco de dados, mas a
cada X minutos descarrega para o indice corrente, eles são feitos
para criar facet search
Fora
ainda CouchDB e outros bancos não relacionais, tudo possivel, se
usar junto de um outro banco master. Também não esqueçamos do
MYSQL-PROXY, sendo possivel mapear query dinamicamente para o nó X,
ex: tenho um indice de InnoDB especializado para Geo-Search, um outro
para Full-Text, um outro para Cruzamentos de categorias com outra
regra de négocio importante, ex: volume, podendo ainda ser o mesmo
servidor só que em diferentes portas, assim você escala as
pesquisas, sem necessariamente precisar de mais hardware.
Gosto
de pensar que o mysql é uma ferramente poderosa, que chega ao seu
limite, quando desejamos fazer mais que isso, ex: ter job`s, usar
algum middleware direto ao banco, ou até mesmo ter algum suporte
mais interessante para usar sobre fibra ótica e storage, pq, bem
funciona, ele vai funcionar, só que vai ser sempre na base da
pesquisa, já outros sistemas são feitos para isso, e quando
precisamos disso, quando falamos em BILHÕES de registro, não é uma
micro-empresa, mas uma média para cima que costuma precisar, e a
maioria dos sites também não, na verdade dificilmente você vai
precisar fazer metade dessas técnicas, e NEM DEVE, pois isso é útil
quando se tem volume, antes disso, fique no básico, o legal é saber
que existe.
MyISAM
- Foi implementado a partir do código da tabela ISAM., introduzindo diversas melhorias como:
- Os arquivos de tabela são transportáveis entre diferentes sistemas operacionais;
- Campos BLOB e TEXT podem ser indexados;
- Os Arquivos índices e de dados podem ser armazenados em dispositivos diferentes (aumento de performance);
- Algoritmos de distribuição de dados e gerenciamento de índices melhorados;
InnoDB
- Rodam sob um engine, desenvolvido pelo Innobase( www.innodb.com), que acrescenta ao MySQL o suporte a TRANSAÇÕES e a CONSTRAINTS de chave estrangeira.
- Para obter o máximo de performance com tabelas InnoDB é necessário configurar o arquivo my.conf(ou my.ini no Windows) de acordo com as características de hardware do servidor onde o MySQL está rodando. Os Detalhes dessa configuração podem ser obtidos no manual do InnoDB.
Material retirado do site
URL: http://www.oficinadanet.com.br/artigo/789/mysql_-_diferenca_entre_innodb_e_myisam
Qualquer duvida deixar um post
Nenhum comentário:
Postar um comentário