Re: do only critical work during single-user vacuum?
От | Peter Geoghegan |
---|---|
Тема | Re: do only critical work during single-user vacuum? |
Дата | |
Msg-id | CAH2-WzkEStBgnk0buJYAKw5jpRYUE+-tuLYn5U+vDyhXNfu+DQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: do only critical work during single-user vacuum? (John Naylor <john.naylor@enterprisedb.com>) |
Ответы |
Re: do only critical work during single-user vacuum?
|
Список | pgsql-hackers |
On Mon, Feb 14, 2022 at 8:04 PM John Naylor <john.naylor@enterprisedb.com> wrote: > The failsafe mode does disable truncation as of v14: > > commit 60f1f09ff44308667ef6c72fbafd68235e55ae27 > Author: Peter Geoghegan <pg@bowt.ie> > Date: Tue Apr 13 12:58:31 2021 -0700 > > Don't truncate heap when VACUUM's failsafe is in effect. That's true, but bear in mind that it only does so when the specific table being vacuumed actually triggers the failsafe. I believe that VACUUM(EMERGENCY) doesn't just limit itself to vacuuming tables where this is guaranteed (or even likely). If I'm not mistaken, it's possible (even likely) that there will be a table whose age(relfrozenxid) is high enough for VACUUM(EMERGENCY) to target the table, and yet not so high that the failsafe will kick in at the earliest opportunity. > To demonstrate to myself, I tried a few vacuums in a debugger session > with a breakpoint at GetNewTransactionId(). I've only seen it reach > here when heap truncation happens (or the not relevant for wraparound > situations FULL and ANALYZE). It's possible for a manually issued VACUUM to directly disable truncation (same with index_cleanup). Without getting into the question of what the ideal behavior might be right now, I can say for sure that it wouldn't be difficult to teach VACUUM(EMERGENCY) to pass down the same options. The failsafe is essentially a mechanism that dynamically changes these options for an ongoing vacuum, once age(relfrozenxid) crosses a certain threshold. There is nothing fundamentally special about that. -- Peter Geoghegan
В списке pgsql-hackers по дате отправления: