Use pre-fetching for ANALYZE
authorStephen Frost <sfrost@snowman.net>
Tue, 16 Mar 2021 18:46:48 +0000 (14:46 -0400)
committerStephen Frost <sfrost@snowman.net>
Tue, 16 Mar 2021 18:46:48 +0000 (14:46 -0400)
commitc6fc50cb40285141fad401321ae21becbaea1c59
treebd46171aa6e6880f86fc8f977891bdff933149d7
parent94d13d474dc61800e8a17cc1959c55815b050ecd
Use pre-fetching for ANALYZE

When we have posix_fadvise() available, we can improve the performance
of an ANALYZE by quite a bit by using it to inform the kernel of the
blocks that we're going to be asking for.  Similar to bitmap index
scans, the number of buffers pre-fetched is based off of the
maintenance_io_concurrency setting (for the particular tablespace or,
if not set, globally, via get_tablespace_maintenance_io_concurrency()).

Reviewed-By: Heikki Linnakangas, Tomas Vondra
Discussion: https://www.postgresql.org/message-id/VI1PR0701MB69603A433348EDCF783C6ECBF6EF0%40VI1PR0701MB6960.eurprd07.prod.outlook.com
src/backend/commands/analyze.c