RE: relation ### modified while in use

Поиск
Список
Период
Сортировка
От Mikheev, Vadim
Тема RE: relation ### modified while in use
Дата
Msg-id 8F4C99C66D04D4118F580090272A7A23018D77@SECTORBASE1
обсуждение исходный текст
Ответ на relation ### modified while in use  (Alex Pilosov <alex@pilosoft.com>)
Список pgsql-hackers
> > > I've wondered why AccessShareLock is a short term lock.
> >
> > MUST BE. AccessShare-/Exclusive-Locks are *data* locks.
> > If one want to protect schema then new schema share/excl locks
> > must be inroduced. There is no conflict between data and
> > schema locks - they are orthogonal.
> >
> 
> Oracle doesn't have Access...Lock locks.

Oracle has no vacuum. We need in AccessExclusiveLock to
support vacuum - to stop any concurrent scans over table.

But maybe I try to make things more complex without
good reason - long term AccessShareLock would just
block vacuum till transaction end (in addition to blocked
concurrent DDL statements we discuss now) - not big
inconvenience probably.
So ok, I have no strong objection against using
Access...Locks as schema locks.

> In my understanding,locking levels you provided contains
> an implicit share/exclusive lock on the corrsponding
> pg_class tuple i.e. AccessExclusive Lock acquires an
> exclusive lock on the corresping pg_class tuple and
> other locks acquire a share lock, Is it right ?

No. Access...Locks are acquired over target table
(table' oid is used as key for lmgr hash table),
not over corresponding pg_class tuple, in what case
we would use pg_clas' oid + table' oid as key
(possibility I've described below).

> > > If we have a mechanism to acquire a share lock on a tuple,we
^^^^^^^^^^^^^^^^^^^^^
> > > could use it for managing system info generally. However the
> > > only allowed lock on a tuple is exclusive.  
> > > Access(Share/Exclusive)
> >
...
> >  - we could add oid to union above and lock tables by acquiring lock
> > on pg_class with objId.oid = table' oid. Same way we could 
> > lock indices and whatever we want... if we want -:)
> 
> As you know well,this implemenation has a flaw that we have
> to be anxious about the shortage of shared memory.

Didn't you asked about share lock on a tuple?
Share locks may be kept in memory only.
I've just pointed that we have such mechanism -:)
Another possible answer is - Shared Catalog Cache.

Vadim


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Hiroshi Inoue
Дата:
Сообщение: Re: relation ### modified while in use
Следующее
От: Tom Lane
Дата:
Сообщение: TODO updates