Progress Reporting
ProtonBase has the ability to report the progress of certain commands during command execution. Currently, the only commands which support progress reporting are CREATE INDEX
and COPY
.
CREATE INDEX Progress Reporting
Whenever CREATE INDEX
or REINDEX
is running, the pg_stat_progress_create_index
view will contain one row for each backend that is currently creating indexes. The tables below describe the information that will be reported and provide information about how to interpret it.
Table pg_stat_progress_create_index
View
Column TypeDescription |
---|
pid integer Process ID of backend. |
datid oid OID of the database to which this backend is connected. |
datname name Name of the database to which this backend is connected. |
relid oid OID of the table on which the index is being created. |
index_relid oid OID of the index being created or reindexed. During a non-concurrent CREATE INDEX , this is 0. |
command text The command that is running: CREATE INDEX , CREATE INDEX CONCURRENTLY , REINDEX , or REINDEX CONCURRENTLY . |
phase text Current processing phase of index creation. |
lockers_total bigint Total number of lockers to wait for, when applicable. |
lockers_done bigint Number of lockers already waited for. |
current_locker_pid bigint Process ID of the locker currently being waited for. |
blocks_total bigint Total number of blocks to be processed in the current phase. |
blocks_done bigint Number of blocks already processed in the current phase. |
tuples_total bigint Total number of tuples to be processed in the current phase. |
tuples_done bigint Number of tuples already processed in the current phase. |
partitions_total bigint When creating an index on a partitioned table, this column is set to the total number of partitions on which the index is to be created. This field is 0 during a REINDEX . |
partitions_done bigint When creating an index on a partitioned table, this column is set to the number of partitions on which the index has been created. This field is 0 during a REINDEX . |
Table CREATE INDEX Phases
Phase | Description |
---|---|
initializing | CREATE INDEX or REINDEX is preparing to create the index. This phase is expected to be very brief. |
waiting for writers before build | CREATE INDEX CONCURRENTLY or REINDEX CONCURRENTLY is waiting for transactions with write locks that can potentially see the table to finish. This phase is skipped when not in concurrent mode. Columns lockers_total , lockers_done and current_locker_pid contain the progress information for this phase. |
building index | The index is being built by the access method-specific code. In this phase, access methods that support progress reporting fill in their own progress data, and the subphase is indicated in this column. Typically, blocks_total and blocks_done will contain progress data, as well as potentially tuples_total and tuples_done . |
waiting for writers before validation | CREATE INDEX CONCURRENTLY or REINDEX CONCURRENTLY is waiting for transactions with write locks that can potentially write into the table to finish. This phase is skipped when not in concurrent mode. Columns lockers_total , lockers_done and current_locker_pid contain the progress information for this phase. |
index validation: scanning index | CREATE INDEX CONCURRENTLY is scanning the index searching for tuples that need to be validated. This phase is skipped when not in concurrent mode. Columns blocks_total (set to the total size of the index) and blocks_done contain the progress information for this phase. |
index validation: sorting tuples | CREATE INDEX CONCURRENTLY is sorting the output of the index scanning phase. |
index validation: scanning table | CREATE INDEX CONCURRENTLY is scanning the table to validate the index tuples collected in the previous two phases. This phase is skipped when not in concurrent mode. Columns blocks_total (set to the total size of the table) and blocks_done contain the progress information for this phase. |
waiting for old snapshots | CREATE INDEX CONCURRENTLY or REINDEX CONCURRENTLY is waiting for transactions that can potentially see the table to release their snapshots. This phase is skipped when not in concurrent mode. Columns lockers_total , lockers_done and current_locker_pid contain the progress information for this phase. |
waiting for readers before marking dead | REINDEX CONCURRENTLY is waiting for transactions with read locks on the table to finish, before marking the old index dead. This phase is skipped when not in concurrent mode. Columns lockers_total , lockers_done and current_locker_pid contain the progress information for this phase. |
waiting for readers before dropping | REINDEX CONCURRENTLY is waiting for transactions with read locks on the table to finish, before dropping the old index. This phase is skipped when not in concurrent mode. Columns lockers_total , lockers_done and current_locker_pid contain the progress information for this phase. |
COPY Progress Reporting
Whenever COPY
is running, the pg_stat_progress_copy
view will contain one row for each backend that is currently running a COPY
command. The table below describes the information that will be reported and provides information about how to interpret it.
Table 28.44. pg_stat_progress_copy
View
Column TypeDescription |
---|
pid integer Process ID of backend. |
datid oid OID of the database to which this backend is connected. |
datname name Name of the database to which this backend is connected. |
relid oid OID of the table on which the COPY command is executed. It is set to 0 if copying from a SELECT query. |
command text The command that is running: COPY FROM , or COPY TO . |
type text The io type that the data is read from or written to: FILE , PROGRAM , PIPE (for COPY FROM STDIN and COPY TO STDOUT ), or CALLBACK (used for example during the initial table synchronization in logical replication). |
bytes_processed bigint Number of bytes already processed by COPY command. |
bytes_total bigint Size of source file for COPY FROM command in bytes. It is set to 0 if not available. |
tuples_processed bigint Number of tuples already processed by COPY command. |
tuples_excluded bigint Number of tuples not processed because they were excluded by the WHERE clause of the COPY command. |