Re: Runtime variations during day - Mailing list pgsql-general

From Carlos Henrique Reimer
Subject Re: Runtime variations during day
Date
Msg-id CAJnnue0pWrRs_47pA7Gt-CL8okLkDjE9gxR0eyrMY4rmC0+89w@mail.gmail.com
Whole thread Raw
In response to Re: Runtime variations during day  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Runtime variations during day  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Re: Runtime variations during day  (Kevin Grittner <kgrittn@ymail.com>)
Re: Runtime variations during day  (Fabrízio de Royes Mello <fabriziomello@gmail.com>)
Re: Runtime variations during day  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
Hi,

Anyway it does not seam related to statistics as the query plan is exactly
the same for both scenarios, morning and evening:

Will include the EXPLAIN ANALYZE again here:
_______________________________________________________________________________________________

Morning:
pgipm=# explain analyze SELECT XMAX, ANO, MES, CODFUNC, SEQFUNC, TIPOPGTO,
CODPD, HRSPD, VLRPD, MESANO, TIPOCALCFERIAS, VLRBASE FROM fparq.cadpag
where  (ANO >'2013')  or (ANO ='2013'  and MES >'01')  or (ANO ='2013'  and
MES ='01'  and CODFUNC >'0000029602')  or (ANO ='2013'  and MES ='01'  and
CODFUNC ='0000029602'  and SEQFUNC >'02')  or (ANO ='2013'  and MES ='01'
and CODFUNC ='0000029602'  and SEQFUNC ='02'  and TIPOPGTO >   (' '))  or
(ANO ='2013'  and MES ='01'  and CODFUNC ='0000029602'  and SEQFUNC ='02'
and TIPOPGTO = (' ')  and CODPD >'000')  order by  ANO ASC,  MES ASC,
CODFUNC ASC,  SEQFUNC ASC,  TIPOPGTO ASC,  CODPD ASC;






QUERY PLAN



------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------------
 Sort  (cost=151845.90..152304.21 rows=183322 width=62) (actual
time=706.676..728.080 rows=32828 loops=1)
   Sort Key: ano, mes, codfunc, seqfunc, tipopgto, codpd
   ->  Index Scan using pagpk_aux_mes, pagpk_aux_mes, pk_cadpag, pk_cadpag,
pk_cadpag, pagchavefunc00 on cadpag  (cost=0.00..131521.88 rows=183322
width=62) (actual time=0.664..614.080 rows=32828 loops=1)
         Index Cond: ((ano > 2013::smallint) OR ((ano = 2013::smallint) AND
(mes > 1::smallint)) OR ((ano = 2013::smallint) AND (mes = 1::smallint) AND
(codfunc > 29602::bigint)) OR ((ano = 2013::smallint) AND (mes =
1::smallint) AND (codfunc = 29602::bigint) AND (seqfunc > 2::smallint)) OR
((ano = 2013::smallint) AND (mes = 1::smallint) AND (codfunc =
29602::bigint) AND (seqfunc = 2::smallint) AND ((tipopgto)::text > '
'::text)) OR ((codfunc = 29602::bigint) AND (seqfunc = 2::smallint) AND
((tipopgto)::text = ' '::text) AND (codpd > 0::smallint) AND (ano =
2013::smallint) AND (mes = 1::smallint)))
         Filter: ((ano > 2013::smallint) OR ((ano = 2013::smallint) AND
(mes > 1::smallint)) OR ((ano = 2013::smallint) AND (mes = 1::smallint) AND
(codfunc > 29602::bigint)) OR ((ano = 2013::smallint) AND (mes =
1::smallint) AND (codfunc = 29602::bigint) AND (seqfunc > 2::smallint)) OR
((ano = 2013::smallint) AND (mes = 1::smallint) AND (codfunc =
29602::bigint) AND (seqfunc = 2::smallint) AND ((tipopgto)::text > '
'::text)) OR ((ano = 2013::smallint) AND (mes = 1::smallint) AND (codfunc =
29602::bigint) AND (seqfunc = 2::smallint) AND ((tipopgto)::text = '
'::text) AND (codpd > 0::smallint)))
 Total runtime: 755.878 ms
(6 rows)

__________________________________________________________________________________________________________________________________________________________________________________________________


Evening:

explain analyze SELECT XMAX, ANO, MES, CODFUNC, SEQFUNC, TIPOPGTO, CODPD,
HRSPD, VLRPD, MESANO, TIPOCALCFERIAS, VLRBASE FROM fparq.cadpag    where
(ANO >'2013')  or (ANO ='2013'  and MES >'01')  or (ANO ='2013'  and MES
='01'  and CODFUNC >'0000029602')  or (ANO ='2013'  and MES ='01'  and
CODFUNC ='0000029602'  and SEQFUNC >'02')  or (ANO ='2013'  and MES ='01'
and CODFUNC ='0000029602'  and SEQFUNC ='02'  and TIPOPGTO >   (' '))  or
(ANO ='2013'  and MES ='01'  and CODFUNC ='0000029602'  and SEQFUNC ='02'
and TIPOPGTO = (' ')  and CODPD >'000')  order by  ANO ASC,  MES ASC,
CODFUNC ASC,  SEQFUNC ASC,  TIPOPGTO ASC,  CODPD ASC;

pgipm=# explain analyze SELECT XMAX, ANO, MES, CODFUNC, SEQFUNC, TIPOPGTO,
CODPD, HRSPD, VLRPD, MESANO, TIPOCALCFERIAS, VLRBASE FROM fparq.cadpag
where  (ANO >'2013')  or (ANO ='2013'  and MES >'01')  or (ANO ='2013'  and
MES ='01'  and CODFUNC >'0000029602')  or (ANO ='2013'  and MES ='01'  and
CODFUNC ='0000029602'  and SEQFUNC >'02')  or (ANO ='2013'  and MES ='01'
and CODFUNC ='0000029602'  and SEQFUNC ='02'  and TIPOPGTO >   (' '))  or
(ANO ='2013'  and MES ='01'  and CODFUNC ='0000029602'  and SEQFUNC ='02'
and TIPOPGTO = (' ')  and CODPD >'000')  order by  ANO ASC,  MES ASC,
CODFUNC ASC,  SEQFUNC ASC,  TIPOPGTO ASC,  CODPD ASC;




                                                        QUERY
PLAN



------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
--------------------------------------------------------------
 Sort  (cost=321670.51..322111.45 rows=176377 width=62) (actual
time=20010.616..20031.887 rows=32840 loops=1)
   Sort Key: ano, mes, codfunc, seqfunc, tipopgto, codpd
   ->  Seq Scan on cadpag  (cost=0.00..302166.75 rows=176377 width=62)
(actual time=18415.380..19915.294 rows=32840 loops=1)
         Filter: ((ano > 2013::smallint) OR ((ano = 2013::smallint) AND
(mes > 1::smallint)) OR ((ano = 2013::smallint) AND (mes = 1::smallint) AND
(codfunc > 29602::bigint)) OR ((ano = 2013::smallint) AND (mes =
1::smallint) AND (codfunc = 29602::bigint) AND (seqfunc > 2::smallint)) OR
((ano = 2013::smallint) AND (mes = 1::smallint) AND (codfunc =
29602::bigint) AND (seqfunc = 2::smallint) AND ((tipopgto)::text > '
'::text)) OR ((ano = 2013::smallint) AND (mes = 1::smallint) AND (codfunc =
29602::bigint) AND (seqfunc = 2::smallint) AND ((tipopgto)::text = '
'::text) AND (codpd > 0::smallint)))
 Total runtime: 20054.851 ms
(5 rows)


__________________________________________________________________________________________________________________________________________________________________________________________________

I've used this query just as an example but the general feeling is that
everything takes more time to process in the evening. Evening is also the
period with more tasks in the the database.

Another example that could help is this seqscan:

explain analyze select sittrib8 from iparq.arript where sittrib8=33;

In the evening:
Fri Feb  8 14:00:01 BRST 2013

                                                        QUERY
PLAN

--------------------------------------------------------------------------------------------------------------------------
 Seq Scan on arript  (cost=100000000.00..100469613.21 rows=1 width=2)
(actual time=198047.253..198047.253 rows=0 loops=1)
   Filter: (sittrib8 = 33)
 Total runtime: 198047.303 ms
(3 rows)


In the morning:
Fri Feb  8 10:51:01 BRST 2013
                                                       QUERY
PLAN

------------------------------------------------------------------------------------------------------------------------
 Seq Scan on arript  (cost=100000000.00..100469607.58 rows=1 width=2)
(actual time=11982.597..11982.597 rows=0 loops=1)
   Filter: (sittrib8 = 33)
 Total runtime: 11982.654 ms
(3 rows)

Thank you!


On Wed, Feb 13, 2013 at 7:53 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

> Kevin Grittner <kgrittn@ymail.com> writes:
> > Carlos Henrique Reimer <carlos.reimer@opendb.com.br> wrote:
> >> I`m trying to figure out why a query runs in 755ms in the morning
> >> and 20054ms (26x) in the evening.
>
> > I would make autovacuum settings much more aggressive, or schedule
> > periodic VACUUM and/or ANALYZE runs during the day.
>
> I'm wondering about cache effects, ie memory already contains desired
> pages in the morning (perhaps as a side-effect of queries run overnight)
> and not so much by the evening.  If so it's not clear that additional
> VACUUM activity would make things better.
>
> But in any case it's hard to diagnose this without EXPLAIN ANALYZE
> output.
>
>                         regards, tom lane
>



--
Reimer
47-3347-1724 47-9183-0547 msn: carlos.reimer@opendb.com.br

pgsql-general by date:

Previous
From: Jeff Janes
Date:
Subject: Re: Runtime variations during day
Next
From: Alvaro Herrera
Date:
Subject: Re: Runtime variations during day