Thread: pgsql: Improve parallel vacuum implementation.

pgsql: Improve parallel vacuum implementation.

From
Amit Kapila
Date:
Improve parallel vacuum implementation.

Previously, in parallel vacuum, we allocated shmem area of
IndexBulkDeleteResult only for indexes where parallel index vacuuming is
safe and had null-bitmap in shmem area to access them. This logic was too
complicated with a small benefit of saving only a few bits per indexes.

In this commit, we allocate a dedicated shmem area for the array of
LVParallelIndStats that includes a parallel-safety flag, the index vacuum
status, and IndexBulkdeleteResult. There is one array element for every
index, even those indexes where parallel index vacuuming is unsafe or not
worthwhile. This commit makes the code clear by removing all
bitmap-related code.

Also, add the check each index vacuum status after parallel index vacuum
to make sure that all indexes have been processed.

Finally, rename parallel vacuum functions to parallel_vacuum_* for
consistency.

Author: Masahiko Sawada, based on suggestions by Andres Freund
Reviewed-by: Hou Zhijie, Amit Kapila
Discussion: https://www.postgresql.org/message-id/20211030212101.ae3qcouatwmy7tbr%40alap3.anarazel.de

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/22bd3cbe0c284758d7174321f5596763095cdd55

Modified Files
--------------
src/backend/access/heap/vacuumlazy.c | 604 +++++++++++++++++------------------
src/tools/pgindent/typedefs.list     |   2 +
2 files changed, 288 insertions(+), 318 deletions(-)