From: | "Ideriha, Takeshi" <ideriha(dot)takeshi(at)jp(dot)fujitsu(dot)com> |
---|---|
To: | 'Kyotaro HORIGUCHI' <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp> |
Cc: | "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, "Tsunakawa, Takayuki" <tsunakawa(dot)takay(at)jp(dot)fujitsu(dot)com>, "alvherre(at)alvh(dot)no-ip(dot)org" <alvherre(at)alvh(dot)no-ip(dot)org>, "andres(at)anarazel(dot)de" <andres(at)anarazel(dot)de>, "robertmhaas(at)gmail(dot)com" <robertmhaas(at)gmail(dot)com>, "michael(dot)paquier(at)gmail(dot)com" <michael(dot)paquier(at)gmail(dot)com>, "david(at)pgmasters(dot)net" <david(at)pgmasters(dot)net>, "craig(at)2ndquadrant(dot)com" <craig(at)2ndquadrant(dot)com>, "tgl(at)sss(dot)pgh(dot)pa(dot)us" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "'nasbyj(at)amazon(dot)com'" <nasbyj(at)amazon(dot)com> |
Subject: | RE: Protect syscache from bloating with negative cache entries |
Date: | 2018-11-27 08:55:41 |
Message-ID: | 4E72940DA2BF16479384A86D54D0988A6F3BAE09@G01JPEXMBKW04 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
>From: Ideriha, Takeshi [mailto:ideriha(dot)takeshi(at)jp(dot)fujitsu(dot)com]
>I haven't looked into the code but I'm going to do it later.
Hi, I've taken a look at 0001 patch. Reviewing the rest of patch will be later.
if (!IsParallelWorker())
+ {
stmtStartTimestamp = GetCurrentTimestamp();
+
+ /* Set this timestamp as aproximated current time */
+ SetCatCacheClock(stmtStartTimestamp);
+ }
else
Just confirmation.
At first I thought that when parallel worker is active catcacheclock is not updated.
But when parallel worker is active catcacheclock is updated by the parent and no problem is occurred.
+ int tupsize = 0;
/* negative entries have no tuple associated */
if (ntp)
{
int i;
+ int tupsize;
+ ct->size = tupsize;
@@ -1906,17 +2051,24 @@ CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp, Datum *arguments,
ct->dead = false;
ct->negative = negative;
ct->hash_value = hashValue;
+ ct->naccess = 0;
+ ct->lastaccess = catcacheclock;
+ ct->size = tupsize;
tupsize is declared twice inside and outiside of if scope but it doesn't seem you need to do so.
And ct->size = tupsize is executed twice at if block and outside of if-else block.
+static inline TimestampTz
+GetCatCacheClock(void)
This function is not called by anyone in this version of patch. In previous version, this one is called by plancache.
Will further patch focus only on catcache? In this case this one can be removed.
There are some typos.
+ int size; /* palloc'ed size off this tuple */
typo: off->of
+ /* Set this timestamp as aproximated current time */
typo: aproximated->approximated
+ * GUC variable to define the minimum size of hash to cosider entry eviction.
typo: cosider -> consider
+ /* initilize catcache reference clock if haven't done yet */
typo:initilize -> initialize
Regards,
Takeshi Ideriha
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2018-11-27 08:59:26 | Re: Continue work on changes to recovery.conf API |
Previous Message | Magnus Hagander | 2018-11-27 08:33:30 | Re: Remove Deprecated Exclusive Backup Mode |