Hi,
I have a similar application,
but instead of adding new items to the db once at time,
I retrieve new IDs from a sequence (actually only every 10'000 times) and write a csv file from perl.
When finished, I load all new record in one run with Copy.
hth,
Marc Mamin
From: pgsql-performance-owner@postgresql.org on behalf of Oliver Crosby
Sent: Wed 7/20/2005 3:50 AM
To: PFC
Cc: Sven Willenberger; Dawid Kuroczko; Kevin Grittner; jd@commandprompt.com; pgsql-performance@postgresql.org
Subject: Re: [PERFORM] Looking for tips
Sorry for the lack of specifics...
We have a file generated as a list of events, one per line. Suppose
lines 1,2,3,5,7,11,etc were related, then the last one would specify
that it's the last event. Gradually this gets assembled by a perl
script and when the last event is encountered, it gets inserted into
the db. For a given table, let's say it's of the form (a,b,c) where
'a' is a pkey, 'b' is indexed, and 'c' is other related information.
The most common 'b' values are cached locally with the perl script to
save us having to query the db. So what we end up having is:
if 'b' exists in cache, use cached 'a' value and continue
else if 'b' exists in the db, use the associated 'a' value and continue
else add a new line with 'b', return the new 'a' and continue
The local cache was a huge time saver with mysql. I've tried making a
plpgsql function that handles everything in one step on the db side,
but it didn't show any improvement. Time permitting, I'll try some new
approaches with changing the scripts and queries, though right now I
was just hoping to tune postgresql.conf to work better with the
hardware available.
Thanks to everyone for your help. Very much appreciated.
---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings