Neil,

> I am using a simple PostgreSQL 7.3 database in a soft-realtime
> application.

Then you're not going to like the answer I have for you, see below.

> I have a problem where an update on a record within a (fully indexed)
> table containing less than ten records needs to occur as fast as
> possible.

Have you considered dropping the indexes?  On such a small table, they won't 
be used, and they are detracting significantly from your update speed.

> Immediately after performing a vaccum, updates take upto 50 milliseconds
> to occur, however the update performance degrades over time, such that
> after a few hours of continuous updates, each update takes about half a
> second. Regular vacuuming improves the performance temporarily, but
> during the vacuum operation (which takes upto 2 minutes), performance of
> concurrent updates falls below an acceptable level (sometimes > 2
> seconds per update).

This is "normal" depending on your platform and concurrent activity.   More 
frequent vacuums would take less time each.   What is your max_fsm_pages set 
to?   Increasing this may decrease the necessity of vacuums as well as 
speeding them up.  Also, are you vacuuming the whole DB or just that table?  
2 mintues seems like a long time; I can vacuum a 100GB database in less than 
4.

> Is there a way to disable this behaviour such that an update operation
> would overwrite the current record and does not generate an outdated
> tuple each time? (My application does not need transactional support).

No.  Our ACID Transaction compliance depends on "that behaviour" (MVCC).  We 
don't offer PostgreSQL in a "non-ACID mode".   If your application truly does 
not need transactional support, you may want to consider an embedded database 
instead, such as BerkeleyDB or SQLite.    PostgreSQL has a *lot* of "baggage" 
associated with having 99.99% incorruptable transactions.

Alternately, you may also want to take a look at TelegraphCG, a derivative of 
PostgreSQL designed to handle "streaming data".  They may have already 
conquered some of your difficulties for you.  
http://telegraph.cs.berkeley.edu/

Were I you, I would start with tuning the database first through 
PostgreSQL.conf and a careful look at my hardware usage and DB maintenance.   
Then I would consider testing 8.0, which has some specific improvements 
designed to address some of the problems you are having.   Particularly, 
Jan's Background Writer and Lazy Vacuum.

-- 
Josh Berkus
Aglio Database Solutions
San Francisco

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to