From: | Max Baker <max(at)warped(dot)org> |
---|---|
To: | Manfred Koizar <mkoi-pg(at)aon(dot)at> |
Cc: | PostgreSQL Performance Mailing List <pgsql-performance(at)postgresql(dot)org> |
Subject: | Re: speeding up COUNT and DISTINCT queries |
Date: | 2003-03-13 01:55:40 |
Message-ID: | 20030313015540.GP30411@warped.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
On Thu, Mar 13, 2003 at 12:48:27AM +0100, Manfred Koizar wrote:
> On Wed, 12 Mar 2003 14:38:11 -0800, Max Baker <max(at)warped(dot)org> wrote:
> > -> Seq Scan on node (cost=0.00..107737.61 rows=35561
> > width=6) (actual time=6.73..44383.57 rows=34597 loops=1)
>
> 35000 tuples in 100000 pages?
>
> >I run VACCUUM ANALYZE once a day.
>
> Try VACUUM FULL VERBOSE ANALAYZE; this should bring back your table
> to a reasonable size. If the table starts growing again, VACUUM more
> often.
Manfred,
Thanks for the help. I guess i'm not clear on why there is so much
extra cruft. Does postgres leave a little bit behind every time it does
an update? Because this table is updated constantly.
Check out the results, 1.5 seconds compared to 46 seconds :
mydb=> vacuum full verbose analyze node;
NOTICE: --Relation node--
NOTICE: Pages 107589: Changed 0, reaped 107588, Empty 0, New 0; Tup 34846: Vac 186847, Keep/VTL 0/0, UnUsed 9450103, MinLen 88, MaxLen 104; Re-using: Free/Avail. Space 837449444/837449368; EndEmpty/Avail. Pages 0/107588.
CPU 15.32s/0.51u sec elapsed 30.89 sec.
NOTICE: Index node_pkey: Pages 10412; Tuples 34846: Deleted 186847.
CPU 3.67s/2.48u sec elapsed 77.06 sec.
NOTICE: Index idx_node_switch_port: Pages 54588; Tuples 34846: Deleted 186847.
CPU 9.59s/2.42u sec elapsed 273.50 sec.
NOTICE: Index idx_node_switch: Pages 50069; Tuples 34846: Deleted 186847.
CPU 8.46s/2.08u sec elapsed 258.62 sec.
NOTICE: Index idx_node_mac: Pages 6749; Tuples 34846: Deleted 186847.
CPU 2.19s/1.59u sec elapsed 56.05 sec.
NOTICE: Index idx_node_switch_port_active: Pages 51138; Tuples 34846: Deleted 186847.
CPU 8.58s/2.99u sec elapsed 273.03 sec.
NOTICE: Index idx_node_mac_active: Pages 6526; Tuples 34846: Deleted 186847.
CPU 1.75s/1.90u sec elapsed 46.70 sec.
NOTICE: Rel node: Pages: 107589 --> 399; Tuple(s) moved: 34303.
CPU 83.49s/51.73u sec elapsed 1252.35 sec.
NOTICE: Index node_pkey: Pages 10412; Tuples 34846: Deleted 34303.
CPU 3.65s/1.64u sec elapsed 72.99 sec.
NOTICE: Index idx_node_switch_port: Pages 54650; Tuples 34846: Deleted 34303.
CPU 10.77s/2.05u sec elapsed 278.46 sec.
NOTICE: Index idx_node_switch: Pages 50114; Tuples 34846: Deleted 34303.
CPU 9.95s/1.65u sec elapsed 266.55 sec.
NOTICE: Index idx_node_mac: Pages 6749; Tuples 34846: Deleted 34303.
CPU 1.75s/1.13u sec elapsed 52.78 sec.
NOTICE: Index idx_node_switch_port_active: Pages 51197; Tuples 34846: Deleted 34303.
CPU 10.48s/1.89u sec elapsed 287.46 sec.
NOTICE: Index idx_node_mac_active: Pages 6526; Tuples 34846: Deleted 34303.
CPU 2.16s/0.96u sec elapsed 48.67 sec.
NOTICE: --Relation pg_toast_64458--
NOTICE: Pages 0: Changed 0, reaped 0, Empty 0, New 0; Tup 0: Vac 0, Keep/VTL 0/0, UnUsed 0, MinLen 0, MaxLen 0; Re-using: Free/Avail. Space 0/0; EndEmpty/Avail. Pages 0/0.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
NOTICE: Index pg_toast_64458_idx: Pages 1; Tuples 0.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
NOTICE: Analyzing node
VACUUM
mydb=> EXPLAIN ANALYZE select distinct(mac) from node;
NOTICE: QUERY PLAN:
Unique (cost=3376.37..3463.48 rows=3485 width=6) (actual time=1049.09..1400.45 rows=25340 loops=1)
-> Sort (cost=3376.37..3376.37 rows=34846 width=6) (actual time=1049.07..1190.58 rows=34846 loops=1)
-> Seq Scan on node (cost=0.00..747.46 rows=34846 width=6) (actual time=0.14..221.18 rows=34846 loops=1)
Total runtime: 1491.56 msec
EXPLAIN
now that's results =]
-m
From | Date | Subject | |
---|---|---|---|
Next Message | Joe Conway | 2003-03-13 01:57:50 | Re: speeding up COUNT and DISTINCT queries |
Previous Message | Max Baker | 2003-03-13 01:00:19 | Re: speeding up COUNT and DISTINCT queries |