Engines MySQL – InnoDB

Ola pessoal,

Conforme divulgado no post anterior, vamos continuar a explicação sobre os engines do MySQL, falando hoje sobre o InnoDB.

O InnoDB foi implementado como Engine Default no MySQL a partir da versão 5.5, deixando de ser um plugin como nas versões anteriores.

Algumas das características cruciais:

– Prove suporte a transações baseadas em ACID.
– Prove suporte a chaves estrangeiras.
– Nível de bloqueio por campo e não por tabela.

Sim jovens, o InnoDB prove suporte a transações seguras, com a conformidade do ACID provendo todas as opções de commit, rollback e recuperação de falhas para proteger os dados envolvidos. Não sabe o que é o ACID? Recomendo a leitura deste artigo, pois é muito importante.

O seu nível de bloqueio é a partir do campo, logo se você esta efetuando uma operação de insert no campo da tabela, apenas aquele campo ficara em lock, enquanto a tabela estará disponível para novas instruções.

Para uma tabela com diversas instruções, esse recurso é uma mão na roda em questão de desempenho e concorrência. Seguem outras características interessantes sobre o InnoDB:

– Armazenamento: Limite de 64TB per table
– Suporte a Transações e Chave estrangeira;
– Suporte a MVCC;
– Bloqueio de linha ao invés de tabelas
– Backup e Recuperação: Sim
– Recuperação automática de falhas: Sim

Para utilizar uma tabela com o InnoDB, basta definir o engine no final da criação da sua tabela, exemplo:

Caso deseje alterar uma tabela existente, você pode executar:

É possível definir o InnoDB como padrão na criação de novas tabelas , incluindo a variável no arquivo de configuração do MySQL (my.cnf):

*Processo necessário em versões anteriores a 5.5.

Diferente do MyISAM o InnoDB trabalha diretamente na memória, onde utiliza o pool de buffers para manter os dados em cache, e os índices na memória. Ou seja, grandes operações sendo feitas diretamente na memória, traz um ganho muito maior ao invés de ter que ir sempre no disco.
Continue lendo