Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Aprenda inglês de uma vez por todas

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Otimização de Desempenho de Aplicações PHP com MySQL

Colaboração: Marcelo Garcia

Data de Publicação: 14 de Outubro de 2004

Em uma busca na melhora do desempenho de minhas aplicações PHP x Mysql, cheguei ao resultado compilado abaixo. Este artigo esta voltado ao Mysql, o mais popular WebDatabase, porém as dicas são em sua maioria aplicavéis a maioria dos bancos no mercado.

  • Open / Close database -> Gasta-se muito tempo, banda, tempo do processador e memoria para estabelecermos uma conexão com o banco de dados. Portanto NÃO fique abrindo e fechando a conexão com o banco. Uma boa regra é abrir o banco no incio da aplicação e só fecha-lo ao termina-la.

  • Conexões permanentes (mysql_pconnect) -> Este recurso NÃO fecha a conexão com o banco mesmo apos o mysql_close ou ao sair da aplicação. Ele deixa a conexão "permanentemente" aberta, para minimizar o tempo gasto com a conexão ou reconexão com o banco de dados.

  • Dica "velha" - Crie indices para agilizar a consulta -> Programadores mais antigos sabem a diferenca de performance de uma pesquisa em uma tabela utilizando-se indice para a pesquisa. Hoje com o advento do SQL, parece que o indice caiu em desuso. Mas em bases mais "frageis" como Mysql ele ainda faz diferenca na performance de uma consulta. Procure manter indices para as suas principais pesquisas. Lembre-se :

  1. Indices farão a performace do select aumentar. Porem operações de inserção, atualização e exclusão de registros ficam mais lentas;

  2. Indices para strings grandes devem ser evitados;
  • Sempre que possivel utilize as funções Min() and Max() em suas consultas ordenadas -> Normalmente voce NÃO precisa trazer todos os registros embora seu chefe sempre o queira. Em bases muito grandies há uma degradação na performance da query. Vejo tambem em várias apostilas de php x mysql o uso indiscriminado da cláusula limit () :

    Exemplo:

      select <campo> from <table> order by <campo> limit (1);
    

    Esqueça o limit() e utilize :

      select min(<campo>) from <table>;  :-))
    

  • Utilize a função mysql_insert_id() para inserts em tabelas master/detail -> Observo muito nos "manuais" comuns da internet a seguinte pratica :

      $master_insert = "insert into <master> (fields,...) values (....)" ;   // salva o registro master
      mysql_query ($master_insert);
      $master_ID  = $mysql_query("select ID from <master> where xxx = yyy") ;   // pesquisa o ID do auto_incremento
      $master_row = mysql_fetch_row($master_id);
      $detail_ID = $master_row[0];
      mysql_query("insert into <detail> (ID, ...) values ($detail_ID,...);");
    

    ao passo que podiamos usar apenas :

      $master_insert = "insert into <master> (fields,...) values (....)" ;   // salva o registro master
      mysql_query ($master_insert);
      $detail_ID = mysql_insert_id();
      mysql_query("insert into <detail> (ID, ...) values ($detail_ID,...);");
    

    com uma query a menos :-))

  • Estruturas de dados pequenas e bem dimencionadas -> Quanto mais próximas do mundo real suas estruturas de dados forem, melhor para a aplicação. Estruturas que procuram prever "tudo" possuem muitos campos, e com tamanhos superdimensionados. Mais memoria e consequentemente mais tempo demorarão suas consultas.

Veja a relação completa dos artigos de Marcelo Garcia

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.99/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1291 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Read in English - Uma Maneira Divertida de Aprender Inglês