I'd like to get some feedback on my setup to see if I can optimize my
database performance.  My application has two separate applications:

The first application connects to websites and records the statistics in the
database.  Websites are monitored every 5 or 10 minutes (depends on client),
there are 900 monitors which comes out to 7,800 monitorings per hour.  The
monitor table has columns "nextdate" and "status" which are updated with
every monitoring, and also a row is inserted into the status table and the
status item table.  For my performance testing (we're just about to go live)
I've loaded the database with a month of data (we don't plan to keep data
longer than 1 month).  So my status table has 6 million records and my
status item table has 6 million records as well.  One key is that the system
is multithreaded so up to 32 processes are accessing the database at the
same time, updating the "nextdate" before the monitoring and inserting the
status and status item records after.  There is a serious performance
constraint here because unlike a webserver, this application cannot slow
down.  If it slows down, we won't be able to monitor our sites at 5 minute
intervals which will make our customers unhappy.

The second application is a web app (tomcat) which lets customers check
their status.  Both of these applications are deployed on the same server, a
4 CPU (Xeon) with 1.5 gigs of RAM.  The OS (RedHat Linux 7.3) and servers
are running on 18gig 10,000 RPM SCSI disk that is mirrored to a 2nd disk.
The database data directory is on a separate 36 gig 10,000 RPM SCSI disk
(we're trying to buy a 2nd disk to mirror it).  I'm using Postgres 7.3.2.

Issue #1 - Vacuum => Overall the system runs pretty well and seems stable.
Last night I did a "vacuum full analyze" and then ran my app overnight and
first thing in the morning I did a "vacuum analyze", which took 35 minutes.
I'm not sure if this is normal for a database this size (there are 15,000
updates per hour).  During the vacuum my application does slow down quite a
bit and afterwards is slow speeds back up.  I've attached the vacuum output
to this mail.  I'm using Java Data Objects (JDO) so if table/column names
look weird it's because the schema is automatically generated.

Issue #2 - postgres.conf => I'd love to get some feedback on these settings.
I've read the archives and no one seems to agree I know, but with the above
description of my app I hope someone can at least point me in the right
direction:

max_connections = 200

#
#       Shared Memory Size
#
shared_buffers = 3072           # min max_connections*2 or 16, 8KB each
#max_fsm_relations = 1000       # min 10, fsm is free space map, ~40 bytes
#max_fsm_pages = 10000          # min 1000, fsm is free space map, ~6 bytes
#max_locks_per_transaction = 64 # min 10
#wal_buffers = 8                # min 4, typically 8KB each

#
#       Non-shared Memory Sizes
#
sort_mem = 8192         # min 64, size in KB
vacuum_mem = 24576              # min 1024, size in KB

The rest are left uncommented (using the defaults).

Issue #3 - server hardware =>

- Is there anything I can do with the hardware to increase performance?

- Should I increase the ram to 2 gigs?  top shows that it is using the swap
a bit (about 100k only).

- I have at my disposal one other server which has 2 Xeons, 10,000 RPM SCSI
drive.  Would it make sense to put Postgres on it and leave my apps running
on the more powerful 4 CPU server?

- Would a RAID setup make the disk faster?  Because top rarely shows the
CPUs above 50%, I suspect maybe the disk is the bottleneck.

I'm thrilled to be able to use Postgres instead of a commercial database and
I'm looking forward to putting this into production.  Any help with the
above questions would be greatly appreciated.

Michael Mattox

veriguard=# vacuum verbose analyze;
INFO:  --Relation pg_catalog.pg_description--
INFO:  Pages 12: Changed 0, Empty 0; Tup 1390: Vac 0, Keep 0, UnUsed 1.
        Total CPU 0.01s/0.00u sec elapsed 0.00 sec.
INFO:  --Relation pg_toast.pg_toast_16416--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_description
INFO:  --Relation pg_catalog.pg_group--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  --Relation pg_toast.pg_toast_1261--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_group
INFO:  --Relation pg_catalog.pg_proc--
INFO:  Pages 58: Changed 0, Empty 0; Tup 1492: Vac 0, Keep 0, UnUsed 165.
        Total CPU 0.00s/0.00u sec elapsed 0.01 sec.
INFO:  --Relation pg_toast.pg_toast_1255--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_proc
INFO:  --Relation pg_catalog.pg_rewrite--
INFO:  Pages 4: Changed 0, Empty 0; Tup 29: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  --Relation pg_toast.pg_toast_16410--
INFO:  Pages 4: Changed 0, Empty 0; Tup 16: Vac 0, Keep 0, UnUsed 1.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_rewrite
INFO:  --Relation pg_catalog.pg_type--
INFO:  Pages 4: Changed 0, Empty 0; Tup 195: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_type
INFO:  --Relation pg_catalog.pg_attribute--
INFO:  Pages 19: Changed 0, Empty 0; Tup 1131: Vac 0, Keep 0, UnUsed 2.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_attribute
INFO:  --Relation pg_catalog.pg_class--
INFO:  Pages 4: Changed 0, Empty 0; Tup 181: Vac 0, Keep 0, UnUsed 31.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_class
INFO:  --Relation pg_catalog.pg_inherits--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_inherits
INFO:  --Relation pg_catalog.pg_index--
INFO:  Pages 3: Changed 0, Empty 0; Tup 95: Vac 0, Keep 0, UnUsed 2.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_index
INFO:  --Relation pg_catalog.pg_operator--
INFO:  Pages 13: Changed 0, Empty 0; Tup 643: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_operator
INFO:  --Relation pg_catalog.pg_opclass--
INFO:  Pages 1: Changed 0, Empty 0; Tup 51: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_opclass
INFO:  --Relation pg_catalog.pg_am--
INFO:  Pages 1: Changed 0, Empty 0; Tup 4: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_am
INFO:  --Relation pg_catalog.pg_amop--
INFO:  Pages 1: Changed 0, Empty 0; Tup 180: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_amop
INFO:  --Relation pg_catalog.pg_amproc--
INFO:  Pages 1: Changed 0, Empty 0; Tup 57: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_amproc
INFO:  --Relation pg_catalog.pg_language--
INFO:  Pages 1: Changed 0, Empty 0; Tup 3: Vac 0, Keep 0, UnUsed 3.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_language
INFO:  --Relation pg_catalog.pg_largeobject--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_largeobject
INFO:  --Relation pg_catalog.pg_aggregate--
INFO:  Pages 1: Changed 0, Empty 0; Tup 60: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_aggregate
INFO:  --Relation pg_catalog.pg_trigger--
INFO:  Pages 1: Changed 0, Empty 0; Tup 2: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_trigger
INFO:  --Relation pg_catalog.pg_listener--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_listener
INFO:  --Relation pg_catalog.pg_cast--
INFO:  Pages 2: Changed 0, Empty 0; Tup 174: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_cast
INFO:  --Relation pg_catalog.pg_namespace--
INFO:  Pages 1: Changed 0, Empty 0; Tup 4: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_namespace
INFO:  --Relation pg_catalog.pg_shadow--
INFO:  Pages 1: Changed 0, Empty 0; Tup 1: Vac 0, Keep 0, UnUsed 1.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  --Relation pg_toast.pg_toast_1260--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_shadow
INFO:  --Relation pg_catalog.pg_conversion--
INFO:  Pages 2: Changed 0, Empty 0; Tup 114: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_conversion
INFO:  --Relation pg_catalog.pg_depend--
INFO:  Pages 21: Changed 0, Empty 0; Tup 2905: Vac 0, Keep 0, UnUsed 2.
        Total CPU 0.00s/0.00u sec elapsed 0.01 sec.
INFO:  Analyzing pg_catalog.pg_depend
INFO:  --Relation pg_catalog.pg_attrdef--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  --Relation pg_toast.pg_toast_16384--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_attrdef
INFO:  --Relation pg_catalog.pg_constraint--
INFO:  Pages 1: Changed 0, Empty 0; Tup 10: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  --Relation pg_toast.pg_toast_16386--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_constraint
INFO:  --Relation pg_catalog.pg_database--
INFO:  Pages 1: Changed 0, Empty 0; Tup 3: Vac 0, Keep 0, UnUsed 4.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  --Relation pg_toast.pg_toast_1262--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing pg_catalog.pg_database
INFO:  --Relation public.companycontactx--
INFO:  Pages 14: Changed 0, Empty 0; Tup 586: Vac 0, Keep 0, UnUsed 1.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  --Relation pg_toast.pg_toast_17030--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing public.companycontactx
INFO:  --Relation public.jdo_sequencex--
INFO:  Index jdo_sequencex_pkey: Pages 1027; Tuples 1: Deleted 5124.
        CPU 0.01s/0.03u sec elapsed 0.04 sec.
INFO:  Removed 5124 tuples in 28 pages.
        CPU 0.00s/0.01u sec elapsed 0.00 sec.
INFO:  Pages 28: Changed 1, Empty 0; Tup 1: Vac 5124, Keep 0, UnUsed 0.
        Total CPU 0.01s/0.04u sec elapsed 0.04 sec.
INFO:  Analyzing public.jdo_sequencex
INFO:  --Relation public.monitorstatusx--
INFO:  Index monitorstatusx_pkey: Pages 24449; Tuples 6398745: Deleted 148.
        CPU 1.75s/1.92u sec elapsed 98.39 sec.
 INFO:  Index monitorstatusxmonitori: Pages 22378; Tuples 6399034: Deleted 148.
        CPU 3.63s/3.09u sec elapsed 206.76 sec.
INFO:  Removed 148 tuples in 109 pages.
        CPU 0.02s/0.02u sec elapsed 1.39 sec.
INFO:  Pages 136706: Changed 151, Empty 0; Tup 6398610: Vac 148, Keep 0, UnUsed 6.
        Total CPU 12.60s/6.74u sec elapsed 382.70 sec.
INFO:  --Relation pg_toast.pg_toast_16995--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing public.monitorstatusx
INFO:  --Relation public.monitorgroup_monitorsx--
INFO:  Pages 10: Changed 0, Empty 0; Tup 1489: Vac 0, Keep 0, UnUsed 61.
        Total CPU 0.01s/0.00u sec elapsed 0.03 sec.
INFO:  Analyzing public.monitorgroup_monitorsx
INFO:  --Relation pg_catalog.pg_statistic--
INFO:  Index pg_statistic_relid_att_index: Pages 4; Tuples 254: Deleted 395.
        CPU 0.01s/0.01u sec elapsed 0.12 sec.
INFO:  Removed 395 tuples in 15 pages.
        CPU 0.00s/0.00u sec elapsed 0.15 sec.
INFO:  Pages 22: Changed 20, Empty 0; Tup 254: Vac 395, Keep 13, UnUsed 107.
        Total CPU 0.01s/0.01u sec elapsed 0.37 sec.
INFO:  --Relation pg_toast.pg_toast_16408--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  --Relation public.monitorx--
INFO:  Index monitorx_pkey: Pages 1194; Tuples 2213: Deleted 170055.
        CPU 1.16s/2.86u sec elapsed 58.16 sec.
 INFO:  Index monitorxstatusi: Pages 3845; Tuples 2862: Deleted 170055.
        CPU 1.53s/3.49u sec elapsed 78.64 sec.
INFO:  Index monitorx_id_index: Pages 4187; Tuples 3070: Deleted 170055.
        CPU 1.59s/3.11u sec elapsed 72.21 sec.
INFO:  Index monitorx_nextdate_enabled_index: Pages 1070; Tuples 3720: Deleted 170055.
        CPU 1.27s/2.79u sec elapsed 68.05 sec.
 INFO:  Removed 170055 tuples in 6036 pages.
        CPU 0.52s/0.81u sec elapsed 206.26 sec.
INFO:  Pages 6076: Changed 0, Empty 0; Tup 2057: Vac 170055, Keep 568, UnUsed 356.
        Total CPU 6.28s/13.23u sec elapsed 486.07 sec.
INFO:  --Relation pg_toast.pg_toast_17006--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing public.monitorx
INFO:  --Relation public.monitor_monitorlocationsx--
INFO:  Pages 14: Changed 0, Empty 0; Tup 2073: Vac 0, Keep 0, UnUsed 2.
        Total CPU 0.00s/0.01u sec elapsed 0.00 sec.
INFO:  Analyzing public.monitor_monitorlocationsx
INFO:  --Relation public.monitorgroupx--
INFO:  Pages 14: Changed 0, Empty 0; Tup 586: Vac 0, Keep 0, UnUsed 21.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing public.monitorgroupx
INFO:  --Relation public.customeraccountx--
INFO:  Pages 14: Changed 0, Empty 0; Tup 586: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  --Relation pg_toast.pg_toast_17044--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing public.customeraccountx
INFO:  --Relation public.monitorstatusitemx--
INFO:  Index monitorstatusitemx_pkey: Pages 24459; Tuples 6401221: Deleted 165.
        CPU 1.69s/1.97u sec elapsed 63.83 sec.
INFO:  Removed 165 tuples in 125 pages.
        CPU 0.05s/0.05u sec elapsed 1.34 sec.
INFO:  Pages 145514: Changed 2021, Empty 0; Tup 6401160: Vac 165, Keep 0, UnUsed 6.
        Total CPU 7.98s/3.23u sec elapsed 153.89 sec.
INFO:  --Relation pg_toast.pg_toast_17037--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing public.monitorstatusitemx
 INFO:  --Relation public.addressx--
INFO:  Pages 10: Changed 0, Empty 0; Tup 586: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.01s/0.00u sec elapsed 0.09 sec.
INFO:  --Relation pg_toast.pg_toast_17014--
INFO:  Pages 0: Changed 0, Empty 0; Tup 0: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing public.addressx
INFO:  --Relation public.monitorstatusitemlistx--
 INFO:  Index monitorstatusitemlistx_pkey: Pages 24464; Tuples 6402415: Deleted 181.
        CPU 1.62s/2.11u sec elapsed 93.29 sec.
INFO:  Removed 181 tuples in 129 pages.
        CPU 0.01s/0.03u sec elapsed 1.86 sec.
INFO:  Pages 101654: Changed 1442, Empty 0; Tup 6402153: Vac 181, Keep 0, UnUsed 5.
        Total CPU 9.87s/4.87u sec elapsed 291.93 sec.
INFO:  Analyzing public.monitorstatusitemlistx
INFO:  --Relation public.companyx--
INFO:  Pages 10: Changed 0, Empty 0; Tup 586: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  Analyzing public.companyx
INFO:  --Relation public.monitorstatusitemlistd8ea58a5x--
INFO:  Index monitorstatusitejdoid7db0befci: Pages 24470; Tuples 6403200: Deleted 175.
        CPU 1.96s/2.07u sec elapsed 97.15 sec.
 INFO:  Index monitorstatusitemlist6fe47957i: Pages 24470; Tuples 6403333: Deleted 175.
        CPU 1.51s/1.77u sec elapsed 92.20 sec.
INFO:  Removed 175 tuples in 100 pages.
        CPU 0.04s/0.04u sec elapsed 2.25 sec.
INFO:  Pages 37703: Changed 570, Empty 0; Tup 6403027: Vac 175, Keep 0, UnUsed 8.
        Total CPU 6.58s/5.15u sec elapsed 262.83 sec.
INFO:  Analyzing public.monitorstatusitemlistd8ea58a5x
INFO:  --Relation public.monitorstatus_statusitemsx--
 INFO:  Index monitorstatus_stjdoidb742c9b3i: Pages 24475; Tuples 6403913: Deleted 175.
        CPU 1.80s/2.12u sec elapsed 109.54 sec.
INFO:  Index monitorstatus_stitemsa2bb7ff1i: Pages 24475; Tuples 6404057: Deleted 175.
        CPU 1.72s/1.95u sec elapsed 107.31 sec.
INFO:  Removed 175 tuples in 107 pages.
        CPU 0.01s/0.02u sec elapsed 1.82 sec.
INFO:  Pages 47124: Changed 701, Empty 0; Tup 6403754: Vac 175, Keep 0, UnUsed 6.
        Total CPU 6.85s/5.14u sec elapsed 298.35 sec.
INFO:  Analyzing public.monitorstatus_statusitemsx
INFO:  --Relation public.companycontact_rncies9688bceax--
INFO:  Pages 1: Changed 0, Empty 0; Tup 4: Vac 0, Keep 0, UnUsed 0.
        Total CPU 0.00s/0.00u sec elapsed 0.04 sec.
INFO:  Analyzing public.companycontact_rncies9688bceax
VACUUM
veriguard=#          
---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to