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

From Joek Hondius
Subject Re: Runtime variations during day
Date
Msg-id 511BEE6C.5010809@rem.nl
Whole thread Raw
In response to Runtime variations during day  (Carlos Henrique Reimer <carlos.reimer@opendb.com.br>)
List pgsql-general
Some issues are just funny.
Maybe lots of inserts deletes during the day?
Vacuum/analyze timing may have an impact on the planner?
Try again morning evening with vac/ana commands before the query.


Op 13-2-2013 19:42, Carlos Henrique Reimer schreef:
>
> Hi,
>
> I`m trying to figure out why a query runs in 755ms in the morning and
> 20054ms (26x) in the evening.
>
>
_________________________________________________________________________________________________________________________________________________________________________________________
>
> 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)
>
>
>
__________________________________________________________________________________________________________________________________________________________________________________________________
>
>
> We initially suspected the reason could be that in the morning all
> data is in memory and in the evening not all is in memory but as
> database size is 40GB and memory 64GB I would eliminate this
> hypothesis . Another reason we rejected this hypothesis is that even
> if you run the query two times, both took almost the same time.
>
> Another possibility is a CPU bottleneck but as there is no indication
> of this condition in the performance data collected by sar, top,
> vmstat we assume the problem has another origin.
>
> How could we determine why this difference in the response time?
>
> Thank you in advance!
>
> Reimer
>

pgsql-general by date:

Previous
From: Carlos Henrique Reimer
Date:
Subject: Runtime variations during day
Next
From: Kevin Grittner
Date:
Subject: Re: Runtime variations during day