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

Responder a