Em 3 de maio de 2013 11:04, Marco Aurélio V. da Silva <
[email protected]> escreveu:

>   Caro Matheus,
>
> Primeiramente obrigado pela atenção, analizando a sua resposta verifiquei
> a tabela frete39m e vi que a demora realmente estava nela, criei um indice
> para a mesma e pelo menos este relatório resolveu o problema, estou
> verificando os reports do pgfouine aqui para ver as outras querys lentas,
> já vi que umas outras querys tb estavam com problema no relacionamente com
> esta tabela e aparentemente resolveu tb. Estou analisando aqui as outras.
>

Se permite uma dica, da uma olhada no pgbadger [1]. È uma excelente
ferramenta de monitoramento e faz coisas que o pg_fouine não faz.





>
> Desde já agradeço a atenção recebida.
>
> Marco Aurélio V. da Silva
> [email protected]
> Prodata Informática e Cad. Ltda
> (33) 3322-4444
>
>  *From:* Matheus Oliveira <[email protected]>
> *Sent:* Friday, May 3, 2013 10:18 AM
> *To:* Comunidade PostgreSQL Brasileira<[email protected]>
> *Subject:* Re: [pgbr-geral] Lentidão em um Servidor
>
>  Oi Marco,
>
>
> Eu acho que o primeiro passo seria revisar essa tua query.
>
> Você precisa mesmo de todos esses outer joins?
> Olhando rapidamente não identifique a necessidade da tabela Frete07 na
> query. Precisa mesmo?
> A query está fazendo leitura sequencial em frete39m.  Quantos registros
> tem essa tabela? E as outras? Quais índices existem na tabela frete39m?
>
> Um bom caminho é tentar ir construindo aos poucos a query.
> Primeiro você faz a query apenas com a tabela Frete01 e verifica se o
> tempo está ok, depois você vai colocando as outras tabelas...
>
>
> []'s
> Matheus Mendonça.
>
>
>
>
> On Fri, May 3, 2013 at 9:49 AM, Marco Aurélio V. da Silva <
> [email protected]> wrote:
>
>>   Caros,
>>
>> Estou enfrentando problema de lentidão em um servidor, e estou com
>> dificuldade de encontrar o problema, pois verificando os logs não encontrei
>> nenhuma “Hint” lá. Vou postar uma query com explain pra começar, e agraceço
>> se puderem me dar um força.
>>
>> Query:
>> SELECT a.DocNumero AS DocNumero,a.DocSerie AS DocSerie,a.DataDespac AS
>> DataDespac,a.DataRecebi AS DataRecebi,a.CodFilOrig AS
>> CodFilOrig,a.CodFilDest AS CodFilDest,a.CodFilArre AS
>> CodFilArre,a.FormaPagam AS FormaPagam,a.ValorApaga AS
>> ValorApaga,a.TotalNotas AS TotalNotas,a.Icms AS Icms ,a.Peso AS Peso
>> ,a.Volumes AS Volumes ,a.CodPagador AS CodPagador,a.Descricao AS Descricao
>> ,a.DtEntrega AS DtEntrega ,0 AS RegMorto ,b.Descricao AS NomePaga ,g.NumDfr
>> AS NumDfr ,(CASE WHEN a.DataRecebi IS NULL THEN 0 ELSE
>> COALESCE(g.CodFilial,0) END) AS FilBaixa ,' ' AS area FROM Frete01 a LEFT
>> OUTER JOIN Frete02 b ON (a.CodPagador = b.CodCliente) LEFT OUTER JOIN
>> Frete07 c ON (a.CodFatura = c.CodFatura AND a.SerieFatur = c.SerieFatur)
>> LEFT OUTER JOIN Frete39m g ON (a.DocNumero = g.DocNumero AND a.DocSerie =
>> g.DocSerie) WHERE a.Datarecebi IS NOT NULL AND a.DataRecebi >= '20130416'
>> AND a.DataRecebi <= '20130416' AND a.Docserie <= 'zzzz' AND a.CodFatura =
>> '' ORDER BY FilBaixa,Substr(a.Descricao,1,10),Docserie,Docnumero
>>
>> Explain:
>> "Sort  (cost=6761.07..6761.07 rows=1 width=184)"
>> "  Sort Key: CASE WHEN (a.datarecebi IS NULL) THEN 0::numeric ELSE
>> COALESCE(g.codfilial, 0::numeric) END, substr((a.descricao)::text, 1, 10),
>> a.docserie, a.docnumero"
>> "  ->  Nested Loop Left Join  (cost=0.00..6761.06 rows=1 width=184)"
>> "        Join Filter: (("outer".docnumero = "inner".docnumero) AND
>> ("outer".docserie = "inner".docserie))"
>> "        ->  Nested Loop Left Join  (cost=0.00..10.68 rows=1 width=164)"
>> "              Join Filter: ("outer".codfatura = "inner".codfatura)"
>> "              ->  Nested Loop Left Join  (cost=0.00..7.20 rows=1
>> width=182)"
>> "                    ->  Index Scan using frete01_x04 on frete01 a
>> (cost=0.00..3.51 rows=1 width=153)"
>> "                          Index Cond: ((datarecebi >=
>> '2013-04-16'::date) AND (datarecebi <= '2013-04-16'::date) AND (docserie <=
>> 'zzzz'::bpchar))"
>> "                          Filter: (codfatura = ''::bpchar)"
>> "                    ->  Index Scan using frete02_unicod on frete02 b
>> (cost=0.00..3.68 rows=1 width=40)"
>> "                          Index Cond: ("outer".codpagador =
>> b.codcliente)"
>> "              ->  Index Scan using frete07_f0701 on frete07 c
>> (cost=0.00..3.46 rows=1 width=18)"
>> "                    Index Cond: (("outer".seriefatur = c.seriefatur) AND
>> (c.codfatura = ''::bpchar))"
>> "        ->  Seq Scan on frete39m g  (cost=0.00..4461.15 rows=152615
>> width=39)"
>>
>> Esta é uma das querys que capturei pelo pgfouine que mais estão
>> demorando, pelo que parece esta demorando na hora de fazer o “Sort”.
>> A base de dados tem 6GB de tamanho, o servidor tem 4GB de memoria,
>> processador é um I3, postgresql 8.1.4 (sei que é muito antigo, mas o
>> programa que usa ele utiliza um componente pago que só comunica com esta
>> versão, ai fico amarrado).
>>
>> Configurações do postgresql.conf:
>> max_connections = 150
>> shared_buffers = 39321
>> work_mem = 16517
>> effective_cache_size = 39321
>> random_page_cost = 2
>>
>> Se tiver alguma coisa para amenizar a situação, desde já agradeço a
>> atenção recebida.
>>
>> Marco Aurélio V. da Silva
>> [email protected]
>> Prodata Informática e Cad. Ltda
>> (33) 3322-4444
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> ------------------------------
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
[1] http://dalibo.github.io/pgbadger/

Abraços
-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a