Re: Plan invalidation

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Plan invalidation
Дата
Msg-id 10638.1175624152@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Plan invalidation  ("Pavan Deolasee" <pavan.deolasee@enterprisedb.com>)
Ответы Re: Plan invalidation  ("Pavan Deolasee" <pavan.deolasee@gmail.com>)
Список pgsql-hackers
"Pavan Deolasee" <pavan.deolasee@enterprisedb.com> writes:
> I traced it a bit and it seems that the invalidation messages
> are not accepted in session 2 because the locks are already held
> on the relation.

Right, because of this coding in LockRelationOid():
   /*    * Now that we have the lock, check for invalidation messages, so that we    * will update or flush any stale
relcacheentry before we try to use it.    * We can skip this in the not-uncommon case that we already had the same    *
typeof lock being requested, since then no one else could have    * modified the relcache entry in an undesirable way.
(Inthe case where    * our own xact modifies the rel, the relcache update happens via    * CommandCounterIncrement, not
here.)   */   if (res != LOCKACQUIRE_ALREADY_HELD)       AcceptInvalidationMessages();
 

We could remove the optimization and do AcceptInvalidationMessages
always, but I think that cure would be a great deal worse than the
disease --- it would hugely increase the contention for SInvalLock.

I'm not particularly worried about missing a potential improvement
in the plan during the first command after a change is committed.
If the invalidation were something that *had* to be accounted for,
such as a dropped index, then there should be adequate locking for it;
plancache is not introducing any new bug that wasn't there before.
        regards, tom lane


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

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: notification payloads
Следующее
От: "Pavan Deolasee"
Дата:
Сообщение: Re: Plan invalidation