Re: Teaching users how they can get the most out of HOT in Postgres 14 - Mailing list pgsql-hackers
From | Peter Geoghegan |
---|---|
Subject | Re: Teaching users how they can get the most out of HOT in Postgres 14 |
Date | |
Msg-id | CAH2-Wz=9-_0bBP3FL5n8aaFuEPAoe4WimtUBKdKdDyvesH0TqQ@mail.gmail.com Whole thread Raw |
In response to | Re: Teaching users how they can get the most out of HOT in Postgres 14 (Michael Paquier <michael@paquier.xyz>) |
Responses |
Re: Teaching users how they can get the most out of HOT in Postgres 14
|
List | pgsql-hackers |
On Mon, Jun 14, 2021 at 5:23 PM Michael Paquier <michael@paquier.xyz> wrote: > > *Why* does it have to work at the system level? I don't understand > > what you mean about the system level. > > I mean that you lack a GUC that allows to enforce to *not* use this > optimization for all relations, for all processes. You've just explained what a GUC is. This is not helpful. > > Why is this fundamentally different to those two things? > > Because the situation looks completely different to me here. TRUNCATE > is thought as a option to be able to avoid an exclusive lock when > truncating the relation file size at the end of VACUUM. More > importantly the default of TRUNCATE is *false*, meaning that we are > never going to skip the truncation unless one specifies it at the > relation level. Maybe it looks different to you because that's not actually true; VACUUM *does* skip the truncation when it feels like it, regardless of the value of the reloption. In general there is no strict guarantee of truncation ever happening -- see lazy_truncate_heap(). Again: Why is this fundamentally different? > Here, what we have is a decision that is enforced to happen by > default, all the time, with the user not knowing about it. If there > is a bug of an issue with it, users, based on your proposal, would be > forced to change it for each *relation*. If they miss some of those > relations, they may still run into problems without knowing about it. > The change of default behavior and having no way to control it in > a simple way look incompatible to me. You've just explained what a reloption is. Again, this is not helping. > Perhaps. What I am really scared about is that you are assuming that > enforcing this decision will be *always* fine. I very clearly and repeatedly said that there was uncertainty about causing issues in rare real world cases. Are you always 100% certain that your code has no bugs before you commit it? Should I now add a GUC for every single feature that I commit? You are just asserting that we must need to add a GUC, without giving any real reasons -- you're just giving generic reasons that work just as well in most situations. I'm baffled by this. > What I am trying to > say here is that it *may not* be fine for everybody, and that there > should be an easy way to turn it off if that proves to be a problem. As I said, I think that the relationship is both necessary and sufficient. A GUC is a heavyweight solution that seems quite unnecessary. > I don't quite see how that's an implementation problem, we have > already many reloptions that are controlled with GUCs if the > reloptions have no default. I never said that there was an implementation problem with a GUC. Just that it was unnecessary, and not consistent with existing practice. Does anyone else have an opinion on this? Of course I can easily add a GUC. But I won't do so in the absence of any real argument in favor of it. > I think that a more careful choice implementation would have been to > turn this optimization off by default, while having an option to allow > one to turn it on at will. You have yet to say anything about the implementation. -- Peter Geoghegan
pgsql-hackers by date: