Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nícolas

Innobd ou MyISAM qual usar para milhões de registros

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Nícolas,

 

Sua preocupação tem fundamento, mas se o banco estiver bem estruturado, com fk's certinhas, tabelas com índices não terás problemas com lentidão não.

 

Digo isto pois, onde trabalho temos bancos de dados que hoje estão com 80 gb, e o sistema ta funcionando normal, temos tabelas com mais de 15 milhões de linhas, e são acessadas com certa frequencia.

 

Sua jogada deve estar nas querys, elas farão do seu sistema um sucesso ou um fracasso.

 

Abraços.

 

_ _

Fabiano Abreu

Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então posso presumir que posso utilizar a tabela Innobd sem problemas com o LIKE na busca desde que estejam com os indices e fk distribuidos corretamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nícolas,

 

Não posso vangloriar muito nem o MyISAM nem o Innodb, pois não tenho muito conhecimento de causa entre as diferenças de ambos, mas pelo que sei, utilizar o MyISAM somente para quesitos de agilidade nas consultas não seria uma boa escolha, mais isto é minha opinião.

 

Se você necessita utilizar muito o like, adicione índices as colunas que mais irá utilizar, lembrando que, índice ajuda no retorno da consulta, mas pode deixar lento a inclusão/atualização.

 

Espero ter lhe sito útil.

 

_ _

Fabiano Abreu

Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.