Convertendo Engine de uma tabela – MySQL

Como já explicamos aqui no blog, o mysql possui vários tipos de engines para suas tabelas, cada qual para uma função e que aceita algumas funções que outras não. Por isso, as vezes ao criarmos uma tabela, não definimos sua engine e ela fica no padrão do mysql. Porém, as vezes a engine padrão não é a melhor para a utilização do bd, e precisamos altera-las. A idéia é explicar rapidamente, 2 modos de alterar a engine das tabelas. Um exeplo via Linux, restaurando a tabela, e o outro dando um alter direto no banco de dados.
O comando via MySQL é simples, um alter na engine resolve o problema, como no exemplo abaixo, alterando a engine da tabela ‘posts_dba’ para a engine InnoDB:

ALTER TABLE `blog`.`posts_dba`ENGINE = InnoDB;

O problema desta alteração: versões de mysql 5.0 não aceitam o alter table engine. Para isso, temos um outro modo de fazer: via backup/restore. No meu exemplo, estou alterando TODA a base para engine innoDB, ou seja, todas as tabelas. Porém, você pode executar backup de apenas uma tabela e restaurar utilizando o comando abaixo (comando de restore apenas):

[root@localhost ~]$ zcat blog.sql.gz |sed ‘s/ENGINE=MyISAM/ENGINE=Innodb/g’ | mysql -u root -p blog

Com isso, no restore, convertemos a engine de myisan para innodb.

Espero ter ajudado!
Até mais pessoal =)

Deixe um comentário