InnoDB e MyISAM – SQL PARA TODOS
19 de Maio de 2014 3 de Maio de 2015 Jose Wilson MySQL
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:
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 😀
Conexões ativas SQL Server
Status das engines MySQL
3 Replies to "InnoDB e MyISAM"
30 de Maio de 2014 às 3:03 PM
Estou desenvolvendo um sistema e irei trabalhar com cadastro de imagens constantes
qual dos soi vc me recomenda?
sqlparatodos disse:
30 de Maio de 2014 às 6:35 PM
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.