Improve parallel vacuum implementation.
authorAmit Kapila <akapila@postgresql.org>
Wed, 15 Dec 2021 02:28:19 +0000 (07:58 +0530)
committerAmit Kapila <akapila@postgresql.org>
Wed, 15 Dec 2021 02:28:19 +0000 (07:58 +0530)
commit22bd3cbe0c284758d7174321f5596763095cdd55
tree4083d66b00cbcfa57479f85e3681377bd5e4e6bc
parent7acd01015c4a5edb253ea9468ccb71ef99cabd1a
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
src/backend/access/heap/vacuumlazy.c
src/tools/pgindent/typedefs.list