MySQL storage engines – parte 2

Continuando o meu post anterior (MySQL storage engines – parte 1), onde apresentamos as principais engines de armazenamento do MySQL, são elas: InnoDB, MyISAM, Memory, CSV, Merge, Archive, Federated e Blackhole, vamos agora entender como escolher e mudar.

Para visualizar todas as opções de engines suportadas pelo servidor, execute:

SHOW ENGINES

Nenhum mecanismo de armazenamento é ideal para todas as circunstâncias. Alguns têm melhor desempenho em certas condições e pior desempenho em outras situações. Há compensações que devem ser consideradas. Uma solução mais segura requer mais recursos; pode ser mais lento, levar mais tempo de CPU e espaço em disco. O MySQL é muito flexível no fato de fornecer vários mecanismos de armazenamento diferentes. Alguns deles, como o mecanismo Archive, são criados para serem usados em situações específicas.

Em alguns casos, a resposta é clara. Sempre que estamos lidando com alguns sistemas de pagamento, somos obrigados a utilizar a solução mais segura. Não podemos nos dar ao luxo de perder esses dados confidenciais. InnoDB é o caminho a seguir. Se quisermos pesquisa de texto completo, podemos escolher MyISAM ou InnoDB. Somente o InnoDB oferece suporte à restrição de integridade referencial de chave estrangeira e, se planejamos usar essa restrição, a escolha é clara.

O modelo de armazenamento é tratado no momento de criação da tabela. Veja o exemplo:

CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name VARCHAR(50), Cost INTEGER) ENGINE='MyISAM';

Se não especificarmos o mecanismo de armazenamento explicitamente, o mecanismo de armazenamento padrão será usado. Antes do MySQL 5.5, o mecanismo de armazenamento padrão era o MyISAM. Para MySQL 5.5 e posterior, o mecanismo de armazenamento padrão é o InnoDB.

É possível migrar para um mecanismo de armazenamento diferente. Observe que a migração de uma tabela grande pode levar muito tempo. Além disso, podemos ter alguns problemas ao migrar tabelas. Alguns recursos podem não ser suportados em ambas as tabelas. Para saber como está configurado o seu schema, execute:

SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA='[nome do schema]'

Para alterar a engine de armazenamento, execute:

ALTER TABLE [nome da tabela] ENGINE='MyISAM'; (exemplo mudando para MyISAM)

É importante entender cenário a cenário e buscar utilizar o melhor de cada opção. Por ser flexível e permitir a mudança de engine por tabela, fique a vontade para testar o desempenho, mudar e retestar. Lembre de sempre manter um backup do banco de dados antes de executar qualquer mudança. O ideal é montar um ambiente de testes semelhando ao ambiente de produção.

Postar um comentário

0 Comentários