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
