Re: Limit on number of users in postgresql?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Willy-Bas Loos" <willybas(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Limit on number of users in postgresql?
Date: 2007-01-29 15:04:50
Message-ID: 10364.1170083090@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

"Willy-Bas Loos" <willybas(at)gmail(dot)com> writes:
> Tom Lane wrote:
>> I think that the
>> main bottleneck would be the "flat file" that's used to tell the
>> postmaster about the set of valid users --- every time a user is
>> added/dropped/changed, that file gets rewritten and then re-parsed
>> by the postmaster. So you could eat a lot of overhead if you change
>> users every few seconds or something like that.

> What you describe Tom (flat file), sounds a bit strange to me. Aren't users
> stored in a table? (pg_catalog.pg_authid)

Yeah, but the postmaster can't read pg_authid, nor any other table,
because it's not logically connected to the database. So any change
to pg_authid gets copied to a "flat" ASCII-text file for the postmaster.

There are a number of reasons for this arrangement, but they really
boil down to keeping the postmaster at arm's length from the backends.
If a backend goes nuts and scribbles all over shared memory before
crashing, it may well manage to take down some other backends with it,
but we don't want any risk that it'll take down the postmaster and
thereby prevent automatic restart. Hence the postmaster is designed
never to depend on valid contents in shared memory, and that means
it can't do much of anything in the way of database access.

This is also the reason that pg_hba.conf and friends are not tables
as you might otherwise expect.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Michael Fuhr 2007-01-29 15:08:54 Re: Postgresql 8.1: plperl code works with LATIN1, fail
Previous Message Nik 2007-01-29 14:38:25 Re: Record not returned until index is rebuilt