Re: performance degradation while doing repeatative updates - Mailing list pgsql-bugs

From Marco A. P. D'Andrade
Subject Re: performance degradation while doing repeatative updates
Date
Msg-id 3D8609D4.5090108@Embratel.net.br
Whole thread Raw
In response to performance degradation while doing repeatative updates  (Vladimir Dozen <vladimir-dozen@mail.ru>)
List pgsql-bugs
I made your tests to see it.

But I already read about many techniques to monitor and increase
performance on Postgres.

A good pratical is use "VACUUM" on your database daily.

The pratical sample.

 >> Starts
NOTICE:  CREATE TABLE will create implicit sequence 'degradation_id_seq'
for SERIAL column 'degradation.id'
NOTICE:  CREATE TABLE/PRIMARY KEY will create implicit index
'degradation_pkey' for table 'degradation'
turn 1: elapsed time: 5.481 Dif: 448.10%
turn 2: elapsed time: 5.589 Dif: 1.97%
turn 3: elapsed time: 5.949 Dif: 6.44%
turn 4: elapsed time: 5.892 Dif: -0.96%
    >> cut <<
turn 241: elapsed time: 18.214 Dif: -5.09%
turn 242: elapsed time: 20.232 Dif: 11.08%
turn 243: elapsed time: 18.865 Dif: -6.76%
turn 244: elapsed time: 21.083 Dif: 11.76%
turn 245: elapsed time: 30.123 Dif: 42.88%
turn 246: elapsed time: 20.804 Dif: -30.94%

 >> running "vacuum verbose degradation;" during requests (not
recomended, but...)

rtest=# vacuum verbose degradation;
NOTICE:  --Relation degradation--
NOTICE:  Pages 4395: Changed 19, reaped 4377, Empty 0, New 0; Tup 3000:
Vac 744000, Keep/VTL 0/0, Crash 0, UnUsed 0, MinLen 44, MaxLen 44;
Re-using: Free/Avail. Space 32788524/32788524; EndEmpty/Avail. Pages
0/4377. CPU 0.45s/0.42u sec.
NOTICE:  Index degradation_pkey: Pages 2033; Tuples 3000: Deleted
744000. CPU 1.89s/25.12u sec.
NOTICE:  Rel degradation: Pages: 4395 --> 18; Tuple(s) moved: 3000. CPU
2.19s/3.08u sec.
NOTICE:  Index degradation_pkey: Pages 2033; Tuples 3000: Deleted 3000.
CPU 0.92s/0.91u sec.
VACUUM

turn 247: elapsed time: 32.044 Dif: 54.03%
turn 248: elapsed time: 86.787 Dif: 170.84%
turn 249: elapsed time: 74.132 Dif: -14.58%
turn 250: elapsed time: 6.150 Dif: -91.70%
turn 251: elapsed time: 8.622 Dif: 40.20%
turn 252: elapsed time: 6.349 Dif: -26.36%
turn 253: elapsed time: 8.406 Dif: 32.40%
turn 254: elapsed time: 6.527 Dif: -22.35%
turn 255: elapsed time: 6.363 Dif: -2.51%
turn 256: elapsed time: 6.921 Dif: 8.77%

 >> long time
rtest=# vacuum verbose analyze degradation;
NOTICE:  --Relation degradation--
NOTICE:  Pages 3653: Changed 18, reaped 3636, Empty 0, New 0; Tup 3000:
Vac 618000, Keep/VTL 0/0, Crash 0, UnUsed 0, MinLen 44, MaxLen 44;
Re-using: Free/Avail. Space 27235632/27235632; EndEmpty/Avail. Pages
0/3636. CPU 0.36s/0.37u sec.
NOTICE:  Index degradation_pkey: Pages 2033; Tuples 3000: Deleted
618000. CPU 1.40s/16.87u sec.
NOTICE:  Rel degradation: Pages: 3653 --> 18; Tuple(s) moved: 3000. CPU
1.92s/2.77u sec.
NOTICE:  Index degradation_pkey: Pages 2033; Tuples 3000: Deleted 3000.
CPU 0.88s/1.09u sec.
NOTICE:  Analyzing...
VACUUM

turn 451: elapsed time: 17.343 Dif: 14.49%
turn 452: elapsed time: 17.461 Dif: 0.68%
turn 453: elapsed time: 15.798 Dif: -9.52%
turn 454: elapsed time: 18.578 Dif: 17.60%
turn 455: elapsed time: 57.360 Dif: 208.75%
turn 456: elapsed time: 7.224 Dif: -87.41%
turn 457: elapsed time: 6.933 Dif: -4.03%
turn 458: elapsed time: 6.631 Dif: -4.36%
turn 459: elapsed time: 6.537 Dif: -1.42%

More details about vacuum on http://techdocs.postgresql.org

I use one daily process to dump data and execute vacuum, and don't have
great problems.

I think... "It's not a BUG, it's a FEATURE" :)

* I use version 7.2.1, but have many recommends to upgrade to 7.2.2.
  Many changes to best performance (vacuum full ?) and resources to
monitoring...


Escuse my bad english :\

[]'s
Marco Antonio



Vladimir Dozen wrote:

> ehlo.
>
>   I'm doing initial design test for our web database, and
>   I found strange performance degradation while doing repeatative
>   updates of a table: each next cycle of update takes more time.
>   Average slowdown for a cycle is about 1%, i.e. after doing about
>   100 updates, update time becomes twice as large.
>
>   I run Postgres under Cygwin on PII-400/192M machine. I has no
>   chance to run it under a kind of unix system yet, but I guess the
>   problem is not related to OS used.
>
>   Version:
>   PostgreSQL 7.2.1 on i686-pc-cygwin, compiled by GCC 2.95.3-5
>
>   I've made a small example (using JDBC) to show it (see attachment).
>   The test creates 3000 records of (id,x,y) integers, and in
>   loop updates x and y values of each record.
>
>   Results are like following:
>
> turn:0 elapsed time:8.612
> turn:1 elapsed time:8.373
> turn:2 elapsed time:7.701
> turn:3 elapsed time:7.42
> turn:4 elapsed time:7.611
> turn:5 elapsed time:7.581
> turn:6 elapsed time:7.631
> turn:7 elapsed time:7.721
> turn:8 elapsed time:7.711
> turn:9 elapsed time:7.862
> turn:10 elapsed time:8.021
> turn:11 elapsed time:7.922
> turn:12 elapsed time:8.211
> turn:13 elapsed time:8.092
> turn:14 elapsed time:8.252
> turn:15 elapsed time:8.292
> turn:16 elapsed time:8.422
> turn:17 elapsed time:8.572
> turn:18 elapsed time:8.502
> turn:19 elapsed time:8.583
> turn:20 elapsed time:8.742
> turn:21 elapsed time:8.943
> turn:22 elapsed time:8.913
> turn:23 elapsed time:9.103
> turn:24 elapsed time:9.133
> turn:25 elapsed time:9.183
> turn:26 elapsed time:9.494
> turn:27 elapsed time:9.784
> turn:28 elapsed time:9.894
> turn:29 elapsed time:9.885
> turn:30 elapsed time:10.044
> turn:31 elapsed time:10.115
> turn:32 elapsed time:10.405
> turn:33 elapsed time:10.645
> turn:34 elapsed time:10.425
> turn:35 elapsed time:10.886
> turn:36 elapsed time:10.915
> turn:37 elapsed time:11.046
> turn:38 elapsed time:11.697
> turn:39 elapsed time:11.627
> turn:40 elapsed time:11.907
> turn:41 elapsed time:12.308
> turn:42 elapsed time:12.538
> turn:43 elapsed time:12.808
> turn:44 elapsed time:13.439
> turn:45 elapsed time:13.67
> turn:46 elapsed time:14.351
> turn:47 elapsed time:15.241
> turn:48 elapsed time:16.014
> turn:49 elapsed time:16.583
> turn:50 elapsed time:17.395
> ...
>
> dozen
>

pgsql-bugs by date:

Previous
From: Vince Vielhaber
Date:
Subject: Re: Web page
Next
From: Peter Eisentraut
Date:
Subject: Re: Postgres storing time in strange manner