Re: error "can only drop stats once" brings down database
От | Kyotaro Horiguchi |
---|---|
Тема | Re: error "can only drop stats once" brings down database |
Дата | |
Msg-id | 20240625.092248.1063552122181843294.horikyota.ntt@gmail.com обсуждение исходный текст |
Ответ на | Re: error "can only drop stats once" brings down database (Michael Paquier <michael@paquier.xyz>) |
Ответы |
Re: error "can only drop stats once" brings down database
|
Список | pgsql-bugs |
At Mon, 17 Jun 2024 08:28:10 +0900, Michael Paquier <michael@paquier.xyz> wrote in > On Fri, Jun 14, 2024 at 09:37:35AM +0900, Michael Paquier wrote: > > I am wondering if we should tackle this problem by adding a notion of > > "age" in the stats entries for what's stored in the central dshash and > > in the hold copies in the backends, so as we dump the "age" of an > > existing stats entry if we find out that it gets reused in a create > > path. That requires some design and would not be backpatchable, but > > it does not seem that invasive at quick glance (I had my eyes on this > > code the full week). Other thoughts are welcome. > > This still sounds like a good idea after sleeping on it over the > weekend. Please note that I am moving on with the problem on this > thread where this has been reported, and that is the point of origin: > https://www.postgresql.org/message-id/ZmvVudpT8z6hbY9t@paquier.xyz > > Let's continue the discussion there. Is it something like this? I forgot the reason why this was excluded from the vinal version, though. https://www.postgresql.org/message-id/20201001.090722.322196928507744460.horikyota.ntt%40gmail.com > Dshash scans are used for dropping and resetting stats entries. Entry > dropping is performed in the following steps. > > (delete_current_stats_entry()) > - Drop the dshash entry (needs exlock of dshash partition). > > - If refcount of the stats entry body is already zero, free the memory > immediately . > > - If not, set the "dropped" flag of the body. No lock is required > because the "dropped" flag won't be even referred to by other > backends until the next step is done. > > - Increment deletion count of the shared hash. (this is used as the > "age" of local pointer cache hash (pgstat_cache). > > (get_stat_entry()) > > - If dshash deletion count is different from the local cache age, scan > over the local cache hash to find "dropped" entries. > > - Decrements refcount of the dropped entry and free the shared entry > if it is no longer referenced. Apparently no lock is required. regards. -- Kyotaro Horiguchi NTT Open Source Software Center
В списке pgsql-bugs по дате отправления: