>>>>> "Tom" == Tom Lane <[EMAIL PROTECTED]> writes:

    Tom> "Jenny -" <[EMAIL PROTECTED]> writes:
    >> Iam trying to acquire rowlevel locks in postgresql. I try doing
    >> this: 'select * from students where name='Larry' for update;
    >> But by looking at the holding array of proclock , I've noticed
    >> that by doing this only AccessShareLock gets acquired which is
    >> a table level lock.

    Tom> Row-level locks are not recorded in proclock --- they are
    Tom> implemented by marking the individual tuple on-disk.  If we
    Tom> tried to record them in shared memory, it'd be very easy to
    Tom> run out of shared memory, because you could be holding row
    Tom> locks on a large number of tuples.

Of course, other database systems do this without too much hassle
.. including relying on lock escalation (move up to page/table level
locks) when the number of locks grow too large. 

Does pgsql only record X locks on the individual tuples on-disk or
does it do so for S locks as well ? 

Not that I dislike the idea - Toby Lehman suggested this in his
Ph.D. thesis in the mid-eighties for main-memory databases (where you
don't take the write penalty).

-- 
Pip-pip
Sailesh
http://www.cs.berkeley.edu/~sailesh



---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to