Nícolas 4 Denunciar post Postado Setembro 27, 2011 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
Fabiano Abreu 22 Denunciar post Postado Setembro 29, 2011 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
Nícolas 4 Denunciar post Postado Setembro 29, 2011 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
Fabiano Abreu 22 Denunciar post Postado Setembro 29, 2011 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