>In case of vacuum, I think we need to track the number of scanned heap
>pages at least, and the information about index scan is the additional
>information

Actually the progress of heap pages scan depend on index scans. So complete
VACUUM progress
needs to have a count of index pages scanned too. So, progress can be
calculated by measuring index_pages_scanned + heap_pages_scanned
against total_index_pages + total_heap_pages. This can make essential
information.

This can be followed by additional individual phase information.

Following fields  common across different commands can be used to display
progress

Command     work done     total work    percent complete  message

VACUUM      x                 y                  z
total progress

                     u                v                   w
       phase 1

The command code can be divided into distinct phases and each phase
progress can be represented separately. With a summary of entire command
progress as the first entry. The summary can be the summation of individual
phase entries.

If the phase repeats during command execution the previous entry for the
phase will be replaced.(for ex. index scan in vacuum)

>Essential information has one numeric data, which is stored
>essentially information regarding of its processing.
We may need more than one numeric data as mentioned above to represent
scanned blocks versus total blocks.

>Additional information has two data: text and numeric. These data is
>free-style data which is stored by each backend as it like.
If I understand your point correctly, I think you are missing following,
The amount of additional information for each command can be different. We
may need an array of  text and numeric data to represent more additional
information.

Thank you,
Rahila Syed

Reply via email to