De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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 :
- Indices farão a performace do select aumentar. Porem operações
de inserção, atualização e exclusão de registros ficam mais
lentas;
- 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.
Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)