Re: Teaching users how they can get the most out of HOT in Postgres 14
От
Masahiko Sawada
Тема
Re: Teaching users how they can get the most out of HOT in Postgres 14
Дата
Msg-id
CAD21AoALi0XUeFGmLpok5a1e4pBefiZp79AGV-7cFVMLZGKsCw@mail.gmail.com
Ответ на
Re: Teaching users how they can get the most out of HOT in Postgres 14 (Peter Geoghegan)
Список
Дерево обсуждения
Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Andres Freund <andres@anarazel.de>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Michael Paquier <michael@paquier.xyz>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Andres Freund <andres@anarazel.de>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Michael Paquier <michael@paquier.xyz>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Michael Paquier <michael@paquier.xyz>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Justin Pryzby <pryzby@telsasoft.com>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Michael Paquier <michael@paquier.xyz>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Masahiko Sawada <sawada.mshk@gmail.com>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Masahiko Sawada <sawada.mshk@gmail.com>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Masahiko Sawada <sawada.mshk@gmail.com>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Masahiko Sawada <sawada.mshk@gmail.com>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Michael Paquier <michael@paquier.xyz>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Masahiko Sawada <sawada.mshk@gmail.com>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Michael Paquier <michael@paquier.xyz>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Mark Dilger <mark.dilger@enterprisedb.com>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
Re: Teaching users how they can get the most out of HOT in Postgres 14 Peter Geoghegan <pg@bowt.ie>
On Thu, Jun 17, 2021 at 10:54 AM Peter Geoghegan wrote:
>
> On Sun, May 30, 2021 at 6:30 PM Masahiko Sawada wrote:
> > We need to accept "yes" and "no" too? Currently, the parsing of a
> > boolean type reloption accepts those words.
>
> Added those in the attached revision, version 2. This is much closer
> to being commitable than v1 was. I plan on committing this in the next
> several days.
>
> I probably need to polish the documentation some more, though.
>
> > It seems to me that it's better to have INDEX_CLEANUP option of VACUUM
> > command support AUTO for consistency. Do you have any concerns about
> > supporting it?
>
> v2 sorts out the mess with VacOptTernaryValue by just adding a new
> enum constant to VacOptTernaryValue, called VACOPT_TERNARY_AUTO -- the
> enum still has a distinct VACOPT_TERNARY_DEFAULT value. v2 also adds a
> new reloption-specific enum, StdRdOptIndexCleanup, which is the
> datatype that we actually use inside the StdRdOptions struct. So we
> are now able to specify "VACUUM (INDEX_CLEANUP AUTO)" in v2 of the
> patch.
>
> v2 also adds a new option to vacuumdb, --force-index-cleanup. This
> seemed to make sense because we already have a --no-index-cleanup
> option.
>
> > > And does StdRdOptions.vacuum_truncate now need
> > > to become a VacOptTernaryValue field too, for consistency with the new
> > > definition of StdRdOptions.vacuum_index_cleanup?
> >
> > We don't have the bypass optimization for heap truncation, unlike
> > index vacuuming. So I think we can leave both vacuum_truncate
> > reloption and TRUNCATE option as boolean parameters.
>
> Actually FWIW we do have a bypass optimization for TRUNCATE -- it too
> has an always-on dynamic behavior -- so it really is like the index
> vacuuming thing. In theory it might make sense to have the same "auto,
> on, off" thing, just like with index vacuuming in the patch. However,
> I haven't done that in the patch because in practice it's a bad idea.
> If we offered users the option of truly forcing truncation, then
> lazy_truncate_heap() could just insist on truncating. It would have to
> just wait for an AEL, no matter how long it took. That would probably
> be dangerous because waiting for an AEL without backing out in VACUUM
> just isn't a great idea.
I agree that it doesn't make sense to force heap truncation.
Thank you for updating the patch! Here are comments on v2 patch:
typedef enum VacOptTernaryValue
{
VACOPT_TERNARY_DEFAULT = 0,
+ VACOPT_TERNARY_AUTO,
VACOPT_TERNARY_DISABLED,
VACOPT_TERNARY_ENABLED,
} VacOptTernaryValue;
VacOptTernaryValue is no longer a ternary value. Can we rename it
something like VacOptValue?
---
+ if (vacopts->force_index_cleanup)
{
- /* INDEX_CLEANUP is supported since v12 */
+ /*
+ * "INDEX_CLEANUP TRUE" has been supported since v12. Though
+ * the --force-index-cleanup vacuumdb option was only added in
+ * v14, it still works in the same way on v12+.
+ */
Assert(serverVersion >= 120000);
+ Assert(!vacopts->no_index_cleanup);
appendPQExpBuffer(sql, "%sINDEX_CLEANUP FALSE", sep);
sep = comma;
}
We should specify TRUE instead.
---
--force-index-cleanup option isn't shown in the help message.
---
I think we also improve the tab completion for INDEX_CLEANUP option.
---
@@ -32,7 +32,7 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [
boolean ]
DISABLE_PAGE_SKIPPING [ boolean ]
SKIP_LOCKED [ boolean ]
- INDEX_CLEANUP [ boolean ]
+ INDEX_CLEANUP [ enum ]
PROCESS_TOAST [ boolean ]
TRUNCATE [ boolean ]
PARALLEL integer
How about listing the available values of INDEX_CLEANUP here instead
of enum? For example, we do a similar thing in the description of
FORMAT option of EXPLAIN command. It would be easier to perceive all
available values.
---
+
+
+
+
It should be --force-index-cleanup.
Regards,
--
Masahiko Sawada
EDB: https://www.enterprisedb.com/
В списке pgsql-hackers по дате отправления
От: Yugo NAGATA
Дата: