From: | Neil Padgett <npadgett(at)redhat(dot)com> |
---|---|
To: | Hiroshi Inoue <Inoue(at)tpf(dot)co(dot)jp> |
Cc: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>, Neil Padgett <npadgett(at)redhat(dot)com>, "pgsql-patches(at)postgresql(dot)org" <pgsql-patches(at)postgresql(dot)org>, Liam Stewart <liams(at)redhat(dot)com>, Fernando Nasser <fnasser(at)redhat(dot)com> |
Subject: | Re: Revised Patch to allow multiple table locks in "Unison" |
Date: | 2001-07-30 00:30:57 |
Message-ID: | Pine.LNX.4.33.0107292014420.32586-100000@lacrosse.corp.redhat.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-patches |
On Mon, 30 Jul 2001, Hiroshi Inoue wrote:
> I have a question.
> What will happen when the second table is locked for a long time
> though the first table isn't locked ?
Consider the case:
LOCK a,b;
Assume a is free (i.e. not locked), but b is busy (i.e. locked).
First the system will do a blocking lock attempt on a, which will return
immediately, since a was free. Table a is now locked. Now, the system will
try a non-blocking lock on b. But, b is busy so the lock attempt will fail
immediately (since the lock attempt was non-blocking). So, the system will
back off, and the lock on a is released.
Next, a blocking lock attempt will be made on b. (Since it was busy last
time, we want to wait for it to become free.) The lock call will block
until b becomes free. At that time, the lock attempt will return, and b
will be locked. Then, a non-blocking lock attempt will be made on table a.
(Recall that we don't have a lock on it, since we released it during
back-off earlier.) Assuming a is still free, it will be locked and the
LOCK command will complete. Otherwise, if a is busy, the lock attempt will
then restart with a blocking lock attempt on a. The procedure will
continue until all tables are free to lock.
In summary, no locks are held while waiting for tables to become free --
in essence, the tables are locked all at once, once all tables in the
LOCK statement are free.
Neil
--
Neil Padgett
Red Hat Canada Ltd. E-Mail: npadgett(at)redhat(dot)com
2323 Yonge Street, Suite #300,
Toronto, ON M4P 2C9
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2001-07-30 02:49:28 | Re: Revised Patch to allow multiple table locks in "Unison" |
Previous Message | Hiroshi Inoue | 2001-07-30 00:11:06 | Re: Revised Patch to allow multiple table locks in "Unison" |
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2001-07-30 02:49:28 | Re: Revised Patch to allow multiple table locks in "Unison" |
Previous Message | Hiroshi Inoue | 2001-07-30 00:11:06 | Re: Revised Patch to allow multiple table locks in "Unison" |