InnoDB e MyISAM

Inaugurando a nova categoria \o/ MySQL.

Não foi da melhor forma que eu acabei descobrindo esta diferença, porém vamos abortar um assunto que é uma dúvida constante no MySQL.

InnoDB e MyISAM, afinal o que é isso?

São as principais engines utilizadas no MySQL. Engines é um conceito no MySQL (Storage Engine) mecanismos de armazenamento, ou propriamente o tipo da tabela.

Por padrão, ao criar uma tabela no MySQL sem especificar a engine, a mesma é criada no modelo MyISAM. Vamos entender melhor:

InnoBD – Uma engine desenvolvida com o objetivo de fornecer suporte a transações no banco MySQL e a Constraints em chaves estrangeiras no MySQL.

MyISAM – Este já é aconselhado para tabelas que não sofrem muitas alterações. Um exemplo Estado, Pais entre outros.

Caso as tabelas na engine MyISAM sofram diversas alterações, os seus índices podem sofrer diversas variações alcançando um valor de fragmentação considerável, onerando assim as consultas realizadas nestas tabelas.

Neste cenário, devido ao tratamento dos registros, o InnoDB pode ser mais rápido comparado ao MyISAM. Porém o MyISAM em muitos momentos pode ser mais rápido que o InnoDB, pelo fato deste trabalhar com transações.

Afinal, qual o melhor? No meu conceito, não existe o melhor, e sim aquele que se adequá a sua necessidade 😀

Criei a tabela como MyISAM, e agora preciso altera-la para InnoDB, preciso cria-la novamente :/ ? Nãão meu queridoOO! basta alterar na tabela desejada conforme a query:

ALTER TABLE table_name ENGINE=InnoDB;

Para criar uma tabela já com a engine InnoDB, basta adicionar o critério ao final da query:

CREATE TABLE sqlparatodos (a INT, b CHAR (20)) ENGINE=InnoDB;

Em uma próxima oportunidade, irei abordar com maior clareza o assunto de índices fragmentados, como identifica-los e trata-los.

Fonte: Xp e com certeza, um excelente tópico sobre o assunto:

http://www.oficinadanet.com.br/artigo/789/mysql_-_diferenca_entre_innodb_e_myisam

É isso ai pessoal. Dúvidas, criticas ou sugestões? Fiquem a vontade, todo retorno é construtivo 😀

Jose Wilson

3 Replies to “InnoDB e MyISAM”

    1. Boa noite, Paulo.

      Tudo joia? Bem primeiramente não é uma boa pratica armazenar imagens diretamente em uma base de dados. Não sei o nível de estrutura que você irá trabalhar, porém desta forma você vai perder desempenho nas consultas, e obter problemas em rotinas diárias de backup, que desta forma serão mais demoradas e você poderá se deparar com erros até a sua conclusão, falo isso por experiência em lidar com este cenário.

      Se for necessário da mesma forma, recomendo que utilize a engine InnoDB. Motivo? Uma vez que o envio de imagens será constante, você irá ganhar em estabilidade no armazenamento destes dados, que é o fator principal pois em casos de indisponibilidades no servidor MySQL, você não irá passar por problemas relacionados a tabelas corrompidas, ocasionados pela engine MyISAM, e em certo ponto irá ter um desempenho melhor por conta do InnoDB ser mais eficaz com um alto armazenamento de dados.

      Encontrei um ótimo exemplo de como operar desta forma junto ao PHP, disponível no DevMEdia:

      http://www.devmedia.com.br/introducao-ao-uso-de-imagens-no-mysql/10041

      Espero que as informações sejam uteis em seu projeto 😀

      Abraços!

Deixe uma resposta