Innobd ou MyISAM qual usar para milhões de registros
Estou desenvolvendo um sistema bem complexo para um cliente, onde futuramente existiram muitos dados, é um sistema que cruza muitas tabelas, existem consultas em que cruzo até 4 tabelas para trazer informações mais completas sobre um determinado item cadastrado pelo usuário.
Meu receio é o seguinte.
Estou usando Innobd a um tempo pois sempre li que são ótimas quando você tem muitos Join's, já o MyISAM é mais rápido porem melhor utilizada em consultas simples (Sem muitos JOIN's).
O problema maior é o seguinte.
Quando acontecer de ter milhões de dados em uma única tabela gostaria que o sistema não ficasse lento, engasgando ou dando algum tipo de erro por ter muita informação em uma tabela.
Digo isso pois ja vi acontecer.
Dava erro na tentativa de criar um arquivo temporário.
Error writing file '/tmp/MYP3mqXu' (Errcode: 28)
Só foi resolver quando dei um Truncate na tabela, felizmente era uma tabela de log's de e-mails enviados então não havia problemas de serem limpas, mas agora não sei se o Innobd é realmente uma boa.
Optei por ele pois tem buscas que preciso pesquisar os termos em muitas tabelas e campos simultaneamente utilizando o LIKE.
Por mais que tenha marcado alguns campos para serem indexados fico com o pé atrás, ainda não sei se o sistema vai responder bem se algum dia o banco de dados atingir 100 ou 200mb por exemplo.
Pesquisando sobre isso vi que é possivel utilizar o Full Text Search
http://phpbrasil.com/phorum/read.php?5,152583
http://www.devmedia.com.br/post-11807-Full-text-search-otimizada-em-SQL-usando-GROUP-BY.html
Mas o problema é que as tabelas precisariam ser do tipo MyISAM
Vi algumas vantagens interessantes em usar o Full Text Search, porém a implementação dele nesse nível do projeto ira tomar muito tempo que não sei se vale apena.
Ainda mais depois que vi isso:
http://andafter.org/blogs/odesenvolvedor/publicacoes/mysql-innodb-e-myisam.html
Gostaria de saber se é necessário ou vale apena migrar todas as tabelas para MyISAM e usar o Full Text Search (sendo que precisaria desafazer e refazer muitas chaves estrangeiras para concluir a migração das tabelas, além de criar novas tabelas para armazenar as palavras como no caso da tabela termo_produto do segundo link que passei)
Pois não quero ter problemas quando o sistema começar a atingir dimensões maiores onde qualquer tipo de migração como essa poderia acarretar muitos problemas.
Como falei no meu caso estou usando Inoobd com campos com indeces
O fato de indexar esses campos resolve o problema de lentidão no futuro?
A quantidade de informação suportada pode me deixar tranquilo?
Tem algum dica interessante no caso de uma tabela Innobd que eu possa estar ignorando e faça um diferencial?
To meio sem noção do que fazer.
Obrigado pela atenção.
Até mais
Discussão (3)
Carregando comentários...