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 < marcoprod...@gmail.com> 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 > marcoprod...@gmail.com > Prodata Informática e Cad. Ltda > (33) 3322-4444 > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > >
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral