Re: Sleep functions - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: Sleep functions
Date
Msg-id 200508241649.j7OGnvq21759@candle.pha.pa.us
Whole thread Raw
In response to Re: Sleep functions  (Robert Treat <xzilla@users.sourceforge.net>)
Responses Re: Sleep functions  (Michael Fuhr <mike@fuhr.org>)
List pgsql-hackers
Added to TODO:
       o Add sleep() to PL/PgSQL


---------------------------------------------------------------------------

Robert Treat wrote:
> On Monday 22 August 2005 11:53, Tom Lane wrote:
> > Robert Treat <xzilla@users.sourceforge.net> writes:
> > >> On Aug 22, 2005, at 12:40 AM, Michael Fuhr wrote:
> > >>> To others who've written their own sleep() function: what are you
> > >>> using it for?
> > >
> > > I know I've used one for a script that reindexes various tables on an
> > > old 7.3 server. I put a sleep of 20 seconds between reindexes to let
> > > built up transactions have a few moments to catch up, thereby smoothing
> > > out i/o. For a long time I used a cpu hogging plpgsql version (since I
> > > had cpu to spare) until I switched to a better pltcl version. If a
> > > server side one existed I would certainly have used that.
> >
> > Tell you the truth, this "use case" qualifies as a poster child for my
> > concern that a server-side sleep would encourage people to write code
> > that sits on locks.  If you'd coded some kind of plpgsql loop that did
> > a REINDEX, sleep N seconds, another REINDEX, etc, you'd have been
> > sitting on the exclusive lock for each table until the end of the whole
> > transaction.  Your approach makes lots of sense if you commit each
> > REINDEX transaction and sleep *outside* the transaction --- but a server
> > sleep function would do exactly not that.
> >
> 
> Note that, as I stated,  this was used in a "script", not a plpgsql function.  
> Each reindex was committed in a separate transaction, and the sleeps were 
> selected between transactions.  I could have done the sleeps outside of the 
> database, but doing it inside allowed me to cut down on the number of 
> connections (which was critical) and also allowed me to play with settings 
> (work_mem for instance) on a single connection.  
> 
> IMHO not having a sleep function doesn't prevent what you are worried about, 
> it just causes people to do what I did, writing up thier own crappy models 
> that starve locks _and_ cpu.  Again server-side sleep is not something I 
> need, it's just something I needed. 
> 
> Incidentally I have also used the sleep function to help test concurrency 
> issues in some situation, where I needed to slow the transactions down enough 
> to verify what was going on.   
> 
> -- 
> Robert Treat
> Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


pgsql-hackers by date:

Previous
From: "Kevin McArthur"
Date:
Subject: FreeBSD ICU was Win32 unicode vs ICU
Next
From: Bruce Momjian
Date:
Subject: Re: Sleep functions