Re: running maintenance tasks on DB - Mailing list pgsql-general

From Neil Conway
Subject Re: running maintenance tasks on DB
Date
Msg-id 20000923145627.A5230@klamath.dyndns.org
Whole thread Raw
In response to Re: running maintenance tasks on DB  (Louis-David Mitterrand <cunctator@apartia.ch>)
List pgsql-general
On Sat, Sep 23, 2000 at 07:34:31PM +0200, Louis-David Mitterrand wrote:
> On Sat, Sep 23, 2000 at 12:45:02PM -0400, Neil Conway wrote:
> > I don't believe you can get backend functions to run at certain
> > times, without using a mechanism like cron to connect to the DB and
> > run them.
>
> It would be really great to have that functionality in the backend,

Yes, this might come in handy.

> > A mod_perl handler is a totally different matter. That's for doing
> > stuff with HTTP requests - isn't this unrelated?
>
> Indeed I wasn't making much sense talking of mod_perl handlers to
> perform DB maintenance :) The reason I came to thinking about them is
> because cron jobs appear as less elegant and integrated with the whole
> application, they appear as external crutch filling a missing DB
> functionality (running scheduled tasks).
>
> Ideally I'd like the auction application to only rely on its two main
> components: Postgres and mod_perl/Apache. The mod_perl idea was to
> install the maintenance script as a ChildInitHandler which is not
> directly related to content generation. Is that totally harebrained?

Well, (AFAIK) the ChildInitHandler is called every time Apache spawns
a new process. This could be *really* bad - for instance, someone starts
up Apache w/ your app (lets say @ ebay.com :D). Because your action
software is so good, they get ~50 hits per second, so Apache starts
spawning children like crazy. Now you have hundreds of Apache children
waiting for you to finish DB maintainence. And the DB is getting
hammered doing this DB maintainence, and isn't processing any real
requests.

And you don't really have any control over how often Apache spawns new
children. It could theoretically go for days without spawning any
new children (for example, if it's serving MaxClients requests all
the time).

I'd recommend sticking with cron :-)

Cron is on every UNIX I've ever used, so it's unlikely an admin will
need to install anything beyond Postgres + mod_perl/Apache. If you
build the maintainence scripts out of the same components as the
rest of the app (Perl, DBI, DBD::Pg, etc), it shouldn't be too bad.

HTH,

Neil

--
Neil Conway <neilconway@home.com>
Get my GnuPG key from: http://klamath.dyndns.org/mykey.asc
Encrypted mail welcomed

Don't worry about people stealing your ideas.  If your ideas are any
good, you'll have to ram them down people's throats.
        -- Howard Aiken

Attachment

pgsql-general by date:

Previous
From: Louis-David Mitterrand
Date:
Subject: Re: running maintenance tasks on DB
Next
From: Alexander Steinert
Date:
Subject: union on views