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