Thread: Some suggestions.

Some suggestions.

From
mlw
Date:
I tried posting this a couple times, and I'm not sure why I never saw it, but I
do think it is something worth thinking about.

There was some discussion about "pre-forking" PostgreSQL, and I gathered that
one of the problems would be how do you know what database to open? At our
shop, we use a combination of Oracle and PostgreSQL. (BTW: Congrats guys, we
have more stability issues with Oracle than we do Postgres!)

One of the features of Oracle that is kind of cool, is that it separates the
database and the network protocol, i.e. the oracle and listener programs. The
listener deals with all the networking crap, and oracle just does the database
stuff.

While somewhat problematic to configure, it has its advantages. While thinking
about pre-forking postgres, it occured to me that Postgres may be made to work
similarly.

postmaster could start up as it normally does, however, there could be an
additional configuration for database listeners. Similar to postgresql.conf,
pglisteners.conf, could specify databases which could be pre-forked and
listening on other TCP/IP ports.

I envision something like this:

[sales_db]
enable_seqscan = false
port = 5433
hostname_lookup = false

[marketing_db]
port = 5434

That way postmaster monitors the state of the "listener" postgres, and after it
accepts on its port, postmaster will fork off another postgres to wait in a
socket accept().

I think it would also be cool to be able to configure the behavior of the
listeners differently than the standard postmaster defaults.