Bruce Momjian wrote:
> Jeff Davis wrote:
>
>>>We do allow limitation on how mush _shared_ memory an instanace can
>>>have, but each session allocates its own memory independently as a Unix
>>>process. We do support multiple databases and, in 7.3beta, schemas.
>>
>>Wouldn't it be pretty easy to run postgres through a process that has a
>>setrlimit on the memory? I assume that postgres handles memory errors
>>gracefully. I think the shared memory limit combined with setrlimit would
>>give him what he needs.
>
> Yes, you could do that. Of course, a backend that exceeds it is going
> to die, but it seems that's what he wants.
>
I think the question from the original poster is really this: how can I have
multiple databases on one server and control the resources consumed. The way
the question is phrased is based on some familiarity with Oracle and none with
Postgres.
In Oracle, *each* database gets an entire copy of Oracle running, with its own
system global area (SGA), on its own listener port. Hence, if you have three
databases running on one server, you need to run three copies of Oracle and
limit resource consumption of each one so the total does not exceed what you
have. It would be like *requiring* three postmasters running on three ports
with Postgres in order to have three databases.
The point is, that there is no need to run three copies of Postgres in order
to have three databases -- you just need one. If PostgreSQL's shared_buffers
is set to something reasonable, and the total Oracle SGAs is also, you ought
to be just fine.
Joe