Performance e Timeout
Colaboração: Gabriel Ricardo Hahmann
Data de Publicação: 29 de Setembro de 2009
Pergunta: Estou fazendo um sistema usando Linux/Apache/PHP/Postgresql com acesso a outro M$SQL. Tenho um processo em PHP que é demorado. Já ajustei o set_time_limit porque dava timeout. Gostaria de saber quais parâmetros de performance devo ajustar no Postgresql, visto que está bastante lento e também se existe alguma interação em background com o PHP. (Fernando Luiz).
Resposta
Fernando,
O postgresql possui alguns comandos para análise de performance. Com estes comandos é possível verificar se a lentidão é proveniente do Postgresql ou do php/Apache.
Alguns destes comandos são:
EXPLAIN: Este comando, em conjunto com SELECT/INSERT/UPDATE/ etc, exibe o plano para a execução do comando informado. Por exemplo, ao invés de você digitar:
SELECT * from nome_tabela;
Digite:
EXPLAIN SELECT * from nome_tabela;
O comando SQL não será executado, ou seja, não será informada a saída do comando sql e sim qual o plano para a execução deste comando, junções, filtros, etc.
ANALYZE: este comando analiza uma determinada tabela ou todas as tabelas. Os resultados são armazenados na visão (view) pg_statistic.
EXPLAIN ANALYZE: analiza uma determinada instrução, exibindo o plano de execução juntamente com o tempo necessário para executar a instrução.
Estes e outros comandos estão disponíveis na documentação do postgresql seção SQL Language, tópico Performance.
O link para o tópico de performance é http://www.postgresql.org/docs/7.4/interactive/performance-tips.html
Gabriel Ricardo Hahmann
Este artigo foi extraído do sistema Rau-Tu de Perguntas e Respostas sobre Bancos de Dados Livres, mantido pelo Centro de Computação da Unicamp.
Veja a relação completa dos artigos da Bancos de Dados Livres
Para se manter atualizado sobre as novidades desta coluna, consulte sempre o newsfeed RSS
Para saber mais sobre RSS, leia o artigo O Padrão RSS - A luz no fim do túnel.


