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.
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 Sent: Friday, May 3, 2013 10:18 AM To: Comunidade PostgreSQL Brasileira 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
