Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Saudações turma!
Estou desenvolvendo um grande projeto comercial, um jogo de administração, e sendo ente meu primeiro "grande" projeto, me deparei com a importância da questão: otimização do banco de dados.
Tenho várias dúvidas e, assim sendo, peço aos admins que mantenham este tópico aberto pois a medida que as questões forem surgindo eu vou postando aqui sem necessidade de novos posts.
Breve explicação sobre o projeto, para ajudar no entendimento do contexto: o game é de administração com ponto focal em companias aérias e, conseguinte, realização de voôs entre todos os aeroprotos do planeta. Além das, óbvias, companias aérias será possível administrar alianças (tipo cooperativa de companias) e bancos (toda a movimentação financeira passará por eles).
Questões que já melhoreu (acho, rs)
Questão 1: uso de índices.
Tabela de exemplo: companias_avioes
/applications/core/interface/imageproxy/imageproxy.php?img=http://img855.imageshack.us/img855/31/mysqlv.png&key=6a49e1e129a785d272521a655ab04f033d51a678d1b5e322d2da3de6b064356f" alt="mysqlv.png" />
Esta tabela retrata bem minhas dúvidas sobre a questão índices.
Nela tenho a primary key, comum a todas as outras bases, no campo reg. Começando a ler, e entender, sobre o assunto eu criei dois índices únicos: jogador e companhia baseado na informação: "precisa criar índices em campos que usará em clásulas WHERE."
De fato ao consultar os aviões eu usarei, muito provavelmente os campos companhia e jogador nas "WHERE", mas também usarei muito consultas JOIN, são muitas dúvidas.
Dúvida 1: estão corretos estes índices?
Dúvida 2: devo, realmente, criar índices em "todos" os campos que usarei pra localizar regitros?
Dúvida 3: sobre os tipos, UNIQUE e PK são autoexplicativos, mas qual a diferença entre FULL TEXT e INDEX? Quando usá-los?
Dúvida 4: como estes índices trabalham?
------------------------------------------------------------------------
Por hora e só, aguardando posicionamentos e, se possível, indicação de bons links para estudo, preferencialmente em português.
otimização é feita em gargalos do sistema e não em todo ele.
sobre indices do mysql:
>
otimização é feita em gargalos do sistema e não em todo ele.
sobre indices do mysql:
http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
Eu diria :
otimização é feita primeiramente nos gargalos, posteriomente de forma preventiva no todo.
Antes eu aconselharia você ler algum material sobre Modelagem e Normalização.
Obrigado Motta! Dei uma lida superficial agora e mais tarde vou procurar mais sobre os dois assuntos/conceitos e estudá-los..
>
otimização é feita em gargalos do sistema e não em todo ele.
sobre indices do mysql:
http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
Shini, obrigado, tem algum link em português mais simples e resumindo?
-----------------------------------------------------------------------------------------------------------------------------
Quanto a otimização, não tenho certeza se usei a palavra correta, mas o objetivo final e manter o banco de dados o mais rápido e organizado possível, pois, claro, é esperada muita atividade nele e mesmo um servidor dedicado não adiantará se não tiver um bom banco de dados. Quero evitar demora desnecessária nas consultas.
O tunning é realmente uma fase necessária no projeto.
Veja se este material ajuda.
http://www.slideshare.net/osscube/mysql-performance-tuning-top-10-tips
http://www.devmedia.com.br/tuning-no-mysql-revista-sql-magazine-94/23024
Antes eu aconselharia você ler algum material sobre Modelagem e Normalização.