mirror of https://github.com/postgres/postgres
Mop-up for wait event naming issues.
Synchronize the event names for parallel hash join waits with other event names, by getting rid of the slashes and dropping "-ing" suffixes. Rename ClogGroupUpdate to XactGroupUpdate, to match the new SLRU name. Move the ProcSignalBarrier event to the IPC category; it doesn't belong under IO. Also a bit more wordsmithing in the wait event documentation tables. Discussion: https://postgr.es/m/4505.1589640417@sss.pgh.pa.us
This commit is contained in:
parent
2c8dd05d6c
commit
3048898e73
|
@ -1178,24 +1178,28 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>ControlFileRead</literal></entry>
|
<entry><literal>ControlFileRead</literal></entry>
|
||||||
<entry>Waiting for a read from the control file.</entry>
|
<entry>Waiting for a read from the <filename>pg_control</filename>
|
||||||
|
file.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>ControlFileSync</literal></entry>
|
<entry><literal>ControlFileSync</literal></entry>
|
||||||
<entry>Waiting for the control file to reach stable storage.</entry>
|
<entry>Waiting for the <filename>pg_control</filename> file to reach
|
||||||
|
stable storage.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>ControlFileSyncUpdate</literal></entry>
|
<entry><literal>ControlFileSyncUpdate</literal></entry>
|
||||||
<entry>Waiting for an update to the control file to reach stable
|
<entry>Waiting for an update to the <filename>pg_control</filename> file
|
||||||
storage.</entry>
|
to reach stable storage.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>ControlFileWrite</literal></entry>
|
<entry><literal>ControlFileWrite</literal></entry>
|
||||||
<entry>Waiting for a write to the control file.</entry>
|
<entry>Waiting for a write to the <filename>pg_control</filename>
|
||||||
|
file.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>ControlFileWriteUpdate</literal></entry>
|
<entry><literal>ControlFileWriteUpdate</literal></entry>
|
||||||
<entry>Waiting for a write to update the control file.</entry>
|
<entry>Waiting for a write to update the <filename>pg_control</filename>
|
||||||
|
file.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>CopyFileRead</literal></entry>
|
<entry><literal>CopyFileRead</literal></entry>
|
||||||
|
@ -1207,8 +1211,8 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>DSMFillZeroWrite</literal></entry>
|
<entry><literal>DSMFillZeroWrite</literal></entry>
|
||||||
<entry>Waiting to write zero bytes to a dynamic shared memory backing
|
<entry>Waiting to fill a dynamic shared memory backing file with
|
||||||
file.</entry>
|
zeroes.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>DataFileExtend</literal></entry>
|
<entry><literal>DataFileExtend</literal></entry>
|
||||||
|
@ -1308,11 +1312,6 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
|
||||||
<entry><literal>LogicalRewriteWrite</literal></entry>
|
<entry><literal>LogicalRewriteWrite</literal></entry>
|
||||||
<entry>Waiting for a write of logical rewrite mappings.</entry>
|
<entry>Waiting for a write of logical rewrite mappings.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
|
||||||
<entry><literal>ProcSignalBarrier</literal></entry>
|
|
||||||
<entry>Waiting for a barrier event to be processed by all
|
|
||||||
backends.</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>RelationMapRead</literal></entry>
|
<entry><literal>RelationMapRead</literal></entry>
|
||||||
<entry>Waiting for a read of the relation map file.</entry>
|
<entry>Waiting for a read of the relation map file.</entry>
|
||||||
|
@ -1464,7 +1463,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>WALSenderTimelineHistoryRead</literal></entry>
|
<entry><literal>WALSenderTimelineHistoryRead</literal></entry>
|
||||||
<entry>Waiting for a read from a timeline history file during walsender
|
<entry>Waiting for a read from a timeline history file during a walsender
|
||||||
timeline command.</entry>
|
timeline command.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
|
@ -1473,8 +1472,8 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>WALSyncMethodAssign</literal></entry>
|
<entry><literal>WALSyncMethodAssign</literal></entry>
|
||||||
<entry>Waiting for data to reach stable storage while assigning WAL sync
|
<entry>Waiting for data to reach stable storage while assigning a new
|
||||||
method.</entry>
|
WAL sync method.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>WALWrite</literal></entry>
|
<entry><literal>WALWrite</literal></entry>
|
||||||
|
@ -1497,7 +1496,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
|
||||||
<tbody>
|
<tbody>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>BackupWaitWalArchive</literal></entry>
|
<entry><literal>BackupWaitWalArchive</literal></entry>
|
||||||
<entry>Waiting for WAL files required for the backup to be successfully
|
<entry>Waiting for WAL files required for a backup to be successfully
|
||||||
archived.</entry>
|
archived.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
|
@ -1521,98 +1520,100 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
|
||||||
<entry><literal>CheckpointStart</literal></entry>
|
<entry><literal>CheckpointStart</literal></entry>
|
||||||
<entry>Waiting for a checkpoint to start.</entry>
|
<entry>Waiting for a checkpoint to start.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
|
||||||
<entry><literal>ClogGroupUpdate</literal></entry>
|
|
||||||
<entry>Waiting for group leader to update transaction status at
|
|
||||||
transaction end.</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>ExecuteGather</literal></entry>
|
<entry><literal>ExecuteGather</literal></entry>
|
||||||
<entry>Waiting for activity from child process while
|
<entry>Waiting for activity from a child process while
|
||||||
executing <literal>Gather</literal> node.</entry>
|
executing a <literal>Gather</literal> plan node.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/Batch/Allocating</literal></entry>
|
<entry><literal>HashBatchAllocate</literal></entry>
|
||||||
<entry>Waiting for an elected Parallel Hash participant to allocate a hash
|
<entry>Waiting for an elected Parallel Hash participant to allocate a hash
|
||||||
table.</entry>
|
table.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/Batch/Electing</literal></entry>
|
<entry><literal>HashBatchElect</literal></entry>
|
||||||
<entry>Electing a Parallel Hash participant to allocate a hash table.</entry>
|
<entry>Waiting to elect a Parallel Hash participant to allocate a hash
|
||||||
|
table.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/Batch/Loading</literal></entry>
|
<entry><literal>HashBatchLoad</literal></entry>
|
||||||
<entry>Waiting for other Parallel Hash participants to finish loading a
|
<entry>Waiting for other Parallel Hash participants to finish loading a
|
||||||
hash table.</entry>
|
hash table.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/Build/Allocating</literal></entry>
|
<entry><literal>HashBuildAllocate</literal></entry>
|
||||||
<entry>Waiting for an elected Parallel Hash participant to allocate the
|
<entry>Waiting for an elected Parallel Hash participant to allocate the
|
||||||
initial hash table.</entry>
|
initial hash table.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/Build/Electing</literal></entry>
|
<entry><literal>HashBuildElect</literal></entry>
|
||||||
<entry>Electing a Parallel Hash participant to allocate the initial hash table.</entry>
|
<entry>Waiting to elect a Parallel Hash participant to allocate the
|
||||||
|
initial hash table.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/Build/HashingInner</literal></entry>
|
<entry><literal>HashBuildHashInner</literal></entry>
|
||||||
<entry>Waiting for other Parallel Hash participants to finish hashing the
|
<entry>Waiting for other Parallel Hash participants to finish hashing the
|
||||||
inner relation.</entry>
|
inner relation.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/Build/HashingOuter</literal></entry>
|
<entry><literal>HashBuildHashOuter</literal></entry>
|
||||||
<entry>Waiting for other Parallel Hash participants to finish partitioning
|
<entry>Waiting for other Parallel Hash participants to finish partitioning
|
||||||
the outer relation.</entry>
|
the outer relation.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/GrowBatches/Allocating</literal></entry>
|
<entry><literal>HashGrowBatchesAllocate</literal></entry>
|
||||||
<entry>Waiting for an elected Parallel Hash participant to allocate more
|
<entry>Waiting for an elected Parallel Hash participant to allocate more
|
||||||
batches.</entry>
|
batches.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/GrowBatches/Deciding</literal></entry>
|
<entry><literal>HashGrowBatchesDecide</literal></entry>
|
||||||
<entry>Electing a Parallel Hash participant to decide on future batch growth.</entry>
|
<entry>Waiting to elect a Parallel Hash participant to decide on future
|
||||||
|
batch growth.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/GrowBatches/Electing</literal></entry>
|
<entry><literal>HashGrowBatchesElect</literal></entry>
|
||||||
<entry>Electing a Parallel Hash participant to allocate more batches.</entry>
|
<entry>Waiting to elect a Parallel Hash participant to allocate more
|
||||||
|
batches.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/GrowBatches/Finishing</literal></entry>
|
<entry><literal>HashGrowBatchesFinish</literal></entry>
|
||||||
<entry>Waiting for an elected Parallel Hash participant to decide on
|
<entry>Waiting for an elected Parallel Hash participant to decide on
|
||||||
future batch growth.</entry>
|
future batch growth.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/GrowBatches/Repartitioning</literal></entry>
|
<entry><literal>HashGrowBatchesRepartition</literal></entry>
|
||||||
<entry>Waiting for other Parallel Hash participants to finishing
|
<entry>Waiting for other Parallel Hash participants to finish
|
||||||
repartitioning.</entry>
|
repartitioning.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/GrowBuckets/Allocating</literal></entry>
|
<entry><literal>HashGrowBucketsAllocate</literal></entry>
|
||||||
<entry>Waiting for an elected Parallel Hash participant to finish
|
<entry>Waiting for an elected Parallel Hash participant to finish
|
||||||
allocating more buckets.</entry>
|
allocating more buckets.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/GrowBuckets/Electing</literal></entry>
|
<entry><literal>HashGrowBucketsElect</literal></entry>
|
||||||
<entry>Electing a Parallel Hash participant to allocate more buckets.</entry>
|
<entry>Waiting to elect a Parallel Hash participant to allocate more
|
||||||
|
buckets.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Hash/GrowBuckets/Reinserting</literal></entry>
|
<entry><literal>HashGrowBucketsReinsert</literal></entry>
|
||||||
<entry>Waiting for other Parallel Hash participants to finish inserting
|
<entry>Waiting for other Parallel Hash participants to finish inserting
|
||||||
tuples into new buckets.</entry>
|
tuples into new buckets.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>LogicalSyncData</literal></entry>
|
<entry><literal>LogicalSyncData</literal></entry>
|
||||||
<entry>Waiting for logical replication remote server to send data for
|
<entry>Waiting for a logical replication remote server to send data for
|
||||||
initial table synchronization.</entry>
|
initial table synchronization.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>LogicalSyncStateChange</literal></entry>
|
<entry><literal>LogicalSyncStateChange</literal></entry>
|
||||||
<entry>Waiting for logical replication remote server to change state.</entry>
|
<entry>Waiting for a logical replication remote server to change
|
||||||
|
state.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>MessageQueueInternal</literal></entry>
|
<entry><literal>MessageQueueInternal</literal></entry>
|
||||||
<entry>Waiting for other process to be attached in shared message queue.</entry>
|
<entry>Waiting for another process to be attached to a shared message
|
||||||
|
queue.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>MessageQueuePutMessage</literal></entry>
|
<entry><literal>MessageQueuePutMessage</literal></entry>
|
||||||
|
@ -1641,7 +1642,13 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>ProcArrayGroupUpdate</literal></entry>
|
<entry><literal>ProcArrayGroupUpdate</literal></entry>
|
||||||
<entry>Waiting for group leader to clear transaction id at transaction end.</entry>
|
<entry>Waiting for the group leader to clear the transaction ID at
|
||||||
|
end of a parallel operation.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><literal>ProcSignalBarrier</literal></entry>
|
||||||
|
<entry>Waiting for a barrier event to be processed by all
|
||||||
|
backends.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>Promote</literal></entry>
|
<entry><literal>Promote</literal></entry>
|
||||||
|
@ -1649,11 +1656,13 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>RecoveryConflictSnapshot</literal></entry>
|
<entry><literal>RecoveryConflictSnapshot</literal></entry>
|
||||||
<entry>Waiting for recovery conflict resolution on a vacuum cleanup.</entry>
|
<entry>Waiting for recovery conflict resolution for a vacuum
|
||||||
|
cleanup.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>RecoveryConflictTablespace</literal></entry>
|
<entry><literal>RecoveryConflictTablespace</literal></entry>
|
||||||
<entry>Waiting for recovery conflict resolution on dropping tablespace.</entry>
|
<entry>Waiting for recovery conflict resolution for dropping a
|
||||||
|
tablespace.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>RecoveryPause</literal></entry>
|
<entry><literal>RecoveryPause</literal></entry>
|
||||||
|
@ -1661,22 +1670,29 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>ReplicationOriginDrop</literal></entry>
|
<entry><literal>ReplicationOriginDrop</literal></entry>
|
||||||
<entry>Waiting for a replication origin to become inactive to be dropped.</entry>
|
<entry>Waiting for a replication origin to become inactive so it can be
|
||||||
|
dropped.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>ReplicationSlotDrop</literal></entry>
|
<entry><literal>ReplicationSlotDrop</literal></entry>
|
||||||
<entry>Waiting for a replication slot to become inactive to be dropped.</entry>
|
<entry>Waiting for a replication slot to become inactive so it can be
|
||||||
|
dropped.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>SafeSnapshot</literal></entry>
|
<entry><literal>SafeSnapshot</literal></entry>
|
||||||
<entry>Waiting for a snapshot for a <literal>READ ONLY DEFERRABLE</literal>
|
<entry>Waiting to obtain a valid snapshot for a <literal>READ ONLY
|
||||||
transaction.</entry>
|
DEFERRABLE</literal> transaction.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><literal>SyncRep</literal></entry>
|
<entry><literal>SyncRep</literal></entry>
|
||||||
<entry>Waiting for confirmation from remote server during synchronous
|
<entry>Waiting for confirmation from a remote server during synchronous
|
||||||
replication.</entry>
|
replication.</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><literal>XactGroupUpdate</literal></entry>
|
||||||
|
<entry>Waiting for the group leader to update transaction status at
|
||||||
|
end of a parallel operation.</entry>
|
||||||
|
</row>
|
||||||
</tbody>
|
</tbody>
|
||||||
</tgroup>
|
</tgroup>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -473,7 +473,7 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status,
|
||||||
int extraWaits = 0;
|
int extraWaits = 0;
|
||||||
|
|
||||||
/* Sleep until the leader updates our XID status. */
|
/* Sleep until the leader updates our XID status. */
|
||||||
pgstat_report_wait_start(WAIT_EVENT_CLOG_GROUP_UPDATE);
|
pgstat_report_wait_start(WAIT_EVENT_XACT_GROUP_UPDATE);
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
/* acts as a read barrier */
|
/* acts as a read barrier */
|
||||||
|
|
|
@ -255,7 +255,7 @@ MultiExecParallelHash(HashState *node)
|
||||||
* ExecHashTableCreate(), or someone else is doing that. Either
|
* ExecHashTableCreate(), or someone else is doing that. Either
|
||||||
* way, wait for everyone to arrive here so we can proceed.
|
* way, wait for everyone to arrive here so we can proceed.
|
||||||
*/
|
*/
|
||||||
BarrierArriveAndWait(build_barrier, WAIT_EVENT_HASH_BUILD_ALLOCATING);
|
BarrierArriveAndWait(build_barrier, WAIT_EVENT_HASH_BUILD_ALLOCATE);
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
|
|
||||||
case PHJ_BUILD_HASHING_INNER:
|
case PHJ_BUILD_HASHING_INNER:
|
||||||
|
@ -311,7 +311,7 @@ MultiExecParallelHash(HashState *node)
|
||||||
* counters.
|
* counters.
|
||||||
*/
|
*/
|
||||||
if (BarrierArriveAndWait(build_barrier,
|
if (BarrierArriveAndWait(build_barrier,
|
||||||
WAIT_EVENT_HASH_BUILD_HASHING_INNER))
|
WAIT_EVENT_HASH_BUILD_HASH_INNER))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Elect one backend to disable any further growth. Batches
|
* Elect one backend to disable any further growth. Batches
|
||||||
|
@ -603,7 +603,7 @@ ExecHashTableCreate(HashState *state, List *hashOperators, List *hashCollations,
|
||||||
* backend will be elected to do that now if necessary.
|
* backend will be elected to do that now if necessary.
|
||||||
*/
|
*/
|
||||||
if (BarrierPhase(build_barrier) == PHJ_BUILD_ELECTING &&
|
if (BarrierPhase(build_barrier) == PHJ_BUILD_ELECTING &&
|
||||||
BarrierArriveAndWait(build_barrier, WAIT_EVENT_HASH_BUILD_ELECTING))
|
BarrierArriveAndWait(build_barrier, WAIT_EVENT_HASH_BUILD_ELECT))
|
||||||
{
|
{
|
||||||
pstate->nbatch = nbatch;
|
pstate->nbatch = nbatch;
|
||||||
pstate->space_allowed = space_allowed;
|
pstate->space_allowed = space_allowed;
|
||||||
|
@ -1076,7 +1076,7 @@ ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable)
|
||||||
* tuples.
|
* tuples.
|
||||||
*/
|
*/
|
||||||
if (BarrierArriveAndWait(&pstate->grow_batches_barrier,
|
if (BarrierArriveAndWait(&pstate->grow_batches_barrier,
|
||||||
WAIT_EVENT_HASH_GROW_BATCHES_ELECTING))
|
WAIT_EVENT_HASH_GROW_BATCHES_ELECT))
|
||||||
{
|
{
|
||||||
dsa_pointer_atomic *buckets;
|
dsa_pointer_atomic *buckets;
|
||||||
ParallelHashJoinBatch *old_batch0;
|
ParallelHashJoinBatch *old_batch0;
|
||||||
|
@ -1186,7 +1186,7 @@ ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable)
|
||||||
case PHJ_GROW_BATCHES_ALLOCATING:
|
case PHJ_GROW_BATCHES_ALLOCATING:
|
||||||
/* Wait for the above to be finished. */
|
/* Wait for the above to be finished. */
|
||||||
BarrierArriveAndWait(&pstate->grow_batches_barrier,
|
BarrierArriveAndWait(&pstate->grow_batches_barrier,
|
||||||
WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATING);
|
WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATE);
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
|
|
||||||
case PHJ_GROW_BATCHES_REPARTITIONING:
|
case PHJ_GROW_BATCHES_REPARTITIONING:
|
||||||
|
@ -1199,7 +1199,7 @@ ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable)
|
||||||
ExecParallelHashMergeCounters(hashtable);
|
ExecParallelHashMergeCounters(hashtable);
|
||||||
/* Wait for the above to be finished. */
|
/* Wait for the above to be finished. */
|
||||||
BarrierArriveAndWait(&pstate->grow_batches_barrier,
|
BarrierArriveAndWait(&pstate->grow_batches_barrier,
|
||||||
WAIT_EVENT_HASH_GROW_BATCHES_REPARTITIONING);
|
WAIT_EVENT_HASH_GROW_BATCHES_REPARTITION);
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
|
|
||||||
case PHJ_GROW_BATCHES_DECIDING:
|
case PHJ_GROW_BATCHES_DECIDING:
|
||||||
|
@ -1210,7 +1210,7 @@ ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable)
|
||||||
* not helping.
|
* not helping.
|
||||||
*/
|
*/
|
||||||
if (BarrierArriveAndWait(&pstate->grow_batches_barrier,
|
if (BarrierArriveAndWait(&pstate->grow_batches_barrier,
|
||||||
WAIT_EVENT_HASH_GROW_BATCHES_DECIDING))
|
WAIT_EVENT_HASH_GROW_BATCHES_DECIDE))
|
||||||
{
|
{
|
||||||
bool space_exhausted = false;
|
bool space_exhausted = false;
|
||||||
bool extreme_skew_detected = false;
|
bool extreme_skew_detected = false;
|
||||||
|
@ -1260,7 +1260,7 @@ ExecParallelHashIncreaseNumBatches(HashJoinTable hashtable)
|
||||||
case PHJ_GROW_BATCHES_FINISHING:
|
case PHJ_GROW_BATCHES_FINISHING:
|
||||||
/* Wait for the above to complete. */
|
/* Wait for the above to complete. */
|
||||||
BarrierArriveAndWait(&pstate->grow_batches_barrier,
|
BarrierArriveAndWait(&pstate->grow_batches_barrier,
|
||||||
WAIT_EVENT_HASH_GROW_BATCHES_FINISHING);
|
WAIT_EVENT_HASH_GROW_BATCHES_FINISH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1509,7 +1509,7 @@ ExecParallelHashIncreaseNumBuckets(HashJoinTable hashtable)
|
||||||
case PHJ_GROW_BUCKETS_ELECTING:
|
case PHJ_GROW_BUCKETS_ELECTING:
|
||||||
/* Elect one participant to prepare to increase nbuckets. */
|
/* Elect one participant to prepare to increase nbuckets. */
|
||||||
if (BarrierArriveAndWait(&pstate->grow_buckets_barrier,
|
if (BarrierArriveAndWait(&pstate->grow_buckets_barrier,
|
||||||
WAIT_EVENT_HASH_GROW_BUCKETS_ELECTING))
|
WAIT_EVENT_HASH_GROW_BUCKETS_ELECT))
|
||||||
{
|
{
|
||||||
size_t size;
|
size_t size;
|
||||||
dsa_pointer_atomic *buckets;
|
dsa_pointer_atomic *buckets;
|
||||||
|
@ -1538,7 +1538,7 @@ ExecParallelHashIncreaseNumBuckets(HashJoinTable hashtable)
|
||||||
case PHJ_GROW_BUCKETS_ALLOCATING:
|
case PHJ_GROW_BUCKETS_ALLOCATING:
|
||||||
/* Wait for the above to complete. */
|
/* Wait for the above to complete. */
|
||||||
BarrierArriveAndWait(&pstate->grow_buckets_barrier,
|
BarrierArriveAndWait(&pstate->grow_buckets_barrier,
|
||||||
WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATING);
|
WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATE);
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
|
|
||||||
case PHJ_GROW_BUCKETS_REINSERTING:
|
case PHJ_GROW_BUCKETS_REINSERTING:
|
||||||
|
@ -1573,7 +1573,7 @@ ExecParallelHashIncreaseNumBuckets(HashJoinTable hashtable)
|
||||||
CHECK_FOR_INTERRUPTS();
|
CHECK_FOR_INTERRUPTS();
|
||||||
}
|
}
|
||||||
BarrierArriveAndWait(&pstate->grow_buckets_barrier,
|
BarrierArriveAndWait(&pstate->grow_buckets_barrier,
|
||||||
WAIT_EVENT_HASH_GROW_BUCKETS_REINSERTING);
|
WAIT_EVENT_HASH_GROW_BUCKETS_REINSERT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -327,7 +327,7 @@ ExecHashJoinImpl(PlanState *pstate, bool parallel)
|
||||||
if (hashtable->nbatch > 1)
|
if (hashtable->nbatch > 1)
|
||||||
ExecParallelHashJoinPartitionOuter(node);
|
ExecParallelHashJoinPartitionOuter(node);
|
||||||
BarrierArriveAndWait(build_barrier,
|
BarrierArriveAndWait(build_barrier,
|
||||||
WAIT_EVENT_HASH_BUILD_HASHING_OUTER);
|
WAIT_EVENT_HASH_BUILD_HASH_OUTER);
|
||||||
}
|
}
|
||||||
Assert(BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
|
Assert(BarrierPhase(build_barrier) == PHJ_BUILD_DONE);
|
||||||
|
|
||||||
|
@ -1135,14 +1135,14 @@ ExecParallelHashJoinNewBatch(HashJoinState *hjstate)
|
||||||
|
|
||||||
/* One backend allocates the hash table. */
|
/* One backend allocates the hash table. */
|
||||||
if (BarrierArriveAndWait(batch_barrier,
|
if (BarrierArriveAndWait(batch_barrier,
|
||||||
WAIT_EVENT_HASH_BATCH_ELECTING))
|
WAIT_EVENT_HASH_BATCH_ELECT))
|
||||||
ExecParallelHashTableAlloc(hashtable, batchno);
|
ExecParallelHashTableAlloc(hashtable, batchno);
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
|
|
||||||
case PHJ_BATCH_ALLOCATING:
|
case PHJ_BATCH_ALLOCATING:
|
||||||
/* Wait for allocation to complete. */
|
/* Wait for allocation to complete. */
|
||||||
BarrierArriveAndWait(batch_barrier,
|
BarrierArriveAndWait(batch_barrier,
|
||||||
WAIT_EVENT_HASH_BATCH_ALLOCATING);
|
WAIT_EVENT_HASH_BATCH_ALLOCATE);
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
|
|
||||||
case PHJ_BATCH_LOADING:
|
case PHJ_BATCH_LOADING:
|
||||||
|
@ -1162,7 +1162,7 @@ ExecParallelHashJoinNewBatch(HashJoinState *hjstate)
|
||||||
}
|
}
|
||||||
sts_end_parallel_scan(inner_tuples);
|
sts_end_parallel_scan(inner_tuples);
|
||||||
BarrierArriveAndWait(batch_barrier,
|
BarrierArriveAndWait(batch_barrier,
|
||||||
WAIT_EVENT_HASH_BATCH_LOADING);
|
WAIT_EVENT_HASH_BATCH_LOAD);
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
|
|
||||||
case PHJ_BATCH_PROBING:
|
case PHJ_BATCH_PROBING:
|
||||||
|
|
|
@ -3774,56 +3774,53 @@ pgstat_get_wait_ipc(WaitEventIPC w)
|
||||||
case WAIT_EVENT_CHECKPOINT_START:
|
case WAIT_EVENT_CHECKPOINT_START:
|
||||||
event_name = "CheckpointStart";
|
event_name = "CheckpointStart";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_CLOG_GROUP_UPDATE:
|
|
||||||
event_name = "ClogGroupUpdate";
|
|
||||||
break;
|
|
||||||
case WAIT_EVENT_EXECUTE_GATHER:
|
case WAIT_EVENT_EXECUTE_GATHER:
|
||||||
event_name = "ExecuteGather";
|
event_name = "ExecuteGather";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_BATCH_ALLOCATING:
|
case WAIT_EVENT_HASH_BATCH_ALLOCATE:
|
||||||
event_name = "Hash/Batch/Allocating";
|
event_name = "HashBatchAllocate";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_BATCH_ELECTING:
|
case WAIT_EVENT_HASH_BATCH_ELECT:
|
||||||
event_name = "Hash/Batch/Electing";
|
event_name = "HashBatchElect";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_BATCH_LOADING:
|
case WAIT_EVENT_HASH_BATCH_LOAD:
|
||||||
event_name = "Hash/Batch/Loading";
|
event_name = "HashBatchLoad";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_BUILD_ALLOCATING:
|
case WAIT_EVENT_HASH_BUILD_ALLOCATE:
|
||||||
event_name = "Hash/Build/Allocating";
|
event_name = "HashBuildAllocate";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_BUILD_ELECTING:
|
case WAIT_EVENT_HASH_BUILD_ELECT:
|
||||||
event_name = "Hash/Build/Electing";
|
event_name = "HashBuildElect";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_BUILD_HASHING_INNER:
|
case WAIT_EVENT_HASH_BUILD_HASH_INNER:
|
||||||
event_name = "Hash/Build/HashingInner";
|
event_name = "HashBuildHashInner";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_BUILD_HASHING_OUTER:
|
case WAIT_EVENT_HASH_BUILD_HASH_OUTER:
|
||||||
event_name = "Hash/Build/HashingOuter";
|
event_name = "HashBuildHashOuter";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATING:
|
case WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATE:
|
||||||
event_name = "Hash/GrowBatches/Allocating";
|
event_name = "HashGrowBatchesAllocate";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_GROW_BATCHES_DECIDING:
|
case WAIT_EVENT_HASH_GROW_BATCHES_DECIDE:
|
||||||
event_name = "Hash/GrowBatches/Deciding";
|
event_name = "HashGrowBatchesDecide";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_GROW_BATCHES_ELECTING:
|
case WAIT_EVENT_HASH_GROW_BATCHES_ELECT:
|
||||||
event_name = "Hash/GrowBatches/Electing";
|
event_name = "HashGrowBatchesElect";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_GROW_BATCHES_FINISHING:
|
case WAIT_EVENT_HASH_GROW_BATCHES_FINISH:
|
||||||
event_name = "Hash/GrowBatches/Finishing";
|
event_name = "HashGrowBatchesFinish";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_GROW_BATCHES_REPARTITIONING:
|
case WAIT_EVENT_HASH_GROW_BATCHES_REPARTITION:
|
||||||
event_name = "Hash/GrowBatches/Repartitioning";
|
event_name = "HashGrowBatchesRepartition";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATING:
|
case WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATE:
|
||||||
event_name = "Hash/GrowBuckets/Allocating";
|
event_name = "HashGrowBucketsAllocate";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_GROW_BUCKETS_ELECTING:
|
case WAIT_EVENT_HASH_GROW_BUCKETS_ELECT:
|
||||||
event_name = "Hash/GrowBuckets/Electing";
|
event_name = "HashGrowBucketsElect";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_HASH_GROW_BUCKETS_REINSERTING:
|
case WAIT_EVENT_HASH_GROW_BUCKETS_REINSERT:
|
||||||
event_name = "Hash/GrowBuckets/Reinserting";
|
event_name = "HashGrowBucketsReinsert";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_LOGICAL_SYNC_DATA:
|
case WAIT_EVENT_LOGICAL_SYNC_DATA:
|
||||||
event_name = "LogicalSyncData";
|
event_name = "LogicalSyncData";
|
||||||
|
@ -3855,6 +3852,9 @@ pgstat_get_wait_ipc(WaitEventIPC w)
|
||||||
case WAIT_EVENT_PROCARRAY_GROUP_UPDATE:
|
case WAIT_EVENT_PROCARRAY_GROUP_UPDATE:
|
||||||
event_name = "ProcArrayGroupUpdate";
|
event_name = "ProcArrayGroupUpdate";
|
||||||
break;
|
break;
|
||||||
|
case WAIT_EVENT_PROC_SIGNAL_BARRIER:
|
||||||
|
event_name = "ProcSignalBarrier";
|
||||||
|
break;
|
||||||
case WAIT_EVENT_PROMOTE:
|
case WAIT_EVENT_PROMOTE:
|
||||||
event_name = "Promote";
|
event_name = "Promote";
|
||||||
break;
|
break;
|
||||||
|
@ -3879,6 +3879,9 @@ pgstat_get_wait_ipc(WaitEventIPC w)
|
||||||
case WAIT_EVENT_SYNC_REP:
|
case WAIT_EVENT_SYNC_REP:
|
||||||
event_name = "SyncRep";
|
event_name = "SyncRep";
|
||||||
break;
|
break;
|
||||||
|
case WAIT_EVENT_XACT_GROUP_UPDATE:
|
||||||
|
event_name = "XactGroupUpdate";
|
||||||
|
break;
|
||||||
/* no default case, so that compiler will warn */
|
/* no default case, so that compiler will warn */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4025,9 +4028,6 @@ pgstat_get_wait_io(WaitEventIO w)
|
||||||
case WAIT_EVENT_LOGICAL_REWRITE_WRITE:
|
case WAIT_EVENT_LOGICAL_REWRITE_WRITE:
|
||||||
event_name = "LogicalRewriteWrite";
|
event_name = "LogicalRewriteWrite";
|
||||||
break;
|
break;
|
||||||
case WAIT_EVENT_PROC_SIGNAL_BARRIER:
|
|
||||||
event_name = "ProcSignalBarrier";
|
|
||||||
break;
|
|
||||||
case WAIT_EVENT_RELATION_MAP_READ:
|
case WAIT_EVENT_RELATION_MAP_READ:
|
||||||
event_name = "RelationMapRead";
|
event_name = "RelationMapRead";
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -850,25 +850,24 @@ typedef enum
|
||||||
WAIT_EVENT_BGWORKER_SHUTDOWN,
|
WAIT_EVENT_BGWORKER_SHUTDOWN,
|
||||||
WAIT_EVENT_BGWORKER_STARTUP,
|
WAIT_EVENT_BGWORKER_STARTUP,
|
||||||
WAIT_EVENT_BTREE_PAGE,
|
WAIT_EVENT_BTREE_PAGE,
|
||||||
WAIT_EVENT_CLOG_GROUP_UPDATE,
|
|
||||||
WAIT_EVENT_CHECKPOINT_DONE,
|
WAIT_EVENT_CHECKPOINT_DONE,
|
||||||
WAIT_EVENT_CHECKPOINT_START,
|
WAIT_EVENT_CHECKPOINT_START,
|
||||||
WAIT_EVENT_EXECUTE_GATHER,
|
WAIT_EVENT_EXECUTE_GATHER,
|
||||||
WAIT_EVENT_HASH_BATCH_ALLOCATING,
|
WAIT_EVENT_HASH_BATCH_ALLOCATE,
|
||||||
WAIT_EVENT_HASH_BATCH_ELECTING,
|
WAIT_EVENT_HASH_BATCH_ELECT,
|
||||||
WAIT_EVENT_HASH_BATCH_LOADING,
|
WAIT_EVENT_HASH_BATCH_LOAD,
|
||||||
WAIT_EVENT_HASH_BUILD_ALLOCATING,
|
WAIT_EVENT_HASH_BUILD_ALLOCATE,
|
||||||
WAIT_EVENT_HASH_BUILD_ELECTING,
|
WAIT_EVENT_HASH_BUILD_ELECT,
|
||||||
WAIT_EVENT_HASH_BUILD_HASHING_INNER,
|
WAIT_EVENT_HASH_BUILD_HASH_INNER,
|
||||||
WAIT_EVENT_HASH_BUILD_HASHING_OUTER,
|
WAIT_EVENT_HASH_BUILD_HASH_OUTER,
|
||||||
WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATING,
|
WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATE,
|
||||||
WAIT_EVENT_HASH_GROW_BATCHES_DECIDING,
|
WAIT_EVENT_HASH_GROW_BATCHES_DECIDE,
|
||||||
WAIT_EVENT_HASH_GROW_BATCHES_ELECTING,
|
WAIT_EVENT_HASH_GROW_BATCHES_ELECT,
|
||||||
WAIT_EVENT_HASH_GROW_BATCHES_FINISHING,
|
WAIT_EVENT_HASH_GROW_BATCHES_FINISH,
|
||||||
WAIT_EVENT_HASH_GROW_BATCHES_REPARTITIONING,
|
WAIT_EVENT_HASH_GROW_BATCHES_REPARTITION,
|
||||||
WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATING,
|
WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATE,
|
||||||
WAIT_EVENT_HASH_GROW_BUCKETS_ELECTING,
|
WAIT_EVENT_HASH_GROW_BUCKETS_ELECT,
|
||||||
WAIT_EVENT_HASH_GROW_BUCKETS_REINSERTING,
|
WAIT_EVENT_HASH_GROW_BUCKETS_REINSERT,
|
||||||
WAIT_EVENT_LOGICAL_SYNC_DATA,
|
WAIT_EVENT_LOGICAL_SYNC_DATA,
|
||||||
WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE,
|
WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE,
|
||||||
WAIT_EVENT_MQ_INTERNAL,
|
WAIT_EVENT_MQ_INTERNAL,
|
||||||
|
@ -879,6 +878,7 @@ typedef enum
|
||||||
WAIT_EVENT_PARALLEL_CREATE_INDEX_SCAN,
|
WAIT_EVENT_PARALLEL_CREATE_INDEX_SCAN,
|
||||||
WAIT_EVENT_PARALLEL_FINISH,
|
WAIT_EVENT_PARALLEL_FINISH,
|
||||||
WAIT_EVENT_PROCARRAY_GROUP_UPDATE,
|
WAIT_EVENT_PROCARRAY_GROUP_UPDATE,
|
||||||
|
WAIT_EVENT_PROC_SIGNAL_BARRIER,
|
||||||
WAIT_EVENT_PROMOTE,
|
WAIT_EVENT_PROMOTE,
|
||||||
WAIT_EVENT_RECOVERY_CONFLICT_SNAPSHOT,
|
WAIT_EVENT_RECOVERY_CONFLICT_SNAPSHOT,
|
||||||
WAIT_EVENT_RECOVERY_CONFLICT_TABLESPACE,
|
WAIT_EVENT_RECOVERY_CONFLICT_TABLESPACE,
|
||||||
|
@ -886,7 +886,8 @@ typedef enum
|
||||||
WAIT_EVENT_REPLICATION_ORIGIN_DROP,
|
WAIT_EVENT_REPLICATION_ORIGIN_DROP,
|
||||||
WAIT_EVENT_REPLICATION_SLOT_DROP,
|
WAIT_EVENT_REPLICATION_SLOT_DROP,
|
||||||
WAIT_EVENT_SAFE_SNAPSHOT,
|
WAIT_EVENT_SAFE_SNAPSHOT,
|
||||||
WAIT_EVENT_SYNC_REP
|
WAIT_EVENT_SYNC_REP,
|
||||||
|
WAIT_EVENT_XACT_GROUP_UPDATE
|
||||||
} WaitEventIPC;
|
} WaitEventIPC;
|
||||||
|
|
||||||
/* ----------
|
/* ----------
|
||||||
|
@ -943,7 +944,6 @@ typedef enum
|
||||||
WAIT_EVENT_LOGICAL_REWRITE_SYNC,
|
WAIT_EVENT_LOGICAL_REWRITE_SYNC,
|
||||||
WAIT_EVENT_LOGICAL_REWRITE_TRUNCATE,
|
WAIT_EVENT_LOGICAL_REWRITE_TRUNCATE,
|
||||||
WAIT_EVENT_LOGICAL_REWRITE_WRITE,
|
WAIT_EVENT_LOGICAL_REWRITE_WRITE,
|
||||||
WAIT_EVENT_PROC_SIGNAL_BARRIER,
|
|
||||||
WAIT_EVENT_RELATION_MAP_READ,
|
WAIT_EVENT_RELATION_MAP_READ,
|
||||||
WAIT_EVENT_RELATION_MAP_SYNC,
|
WAIT_EVENT_RELATION_MAP_SYNC,
|
||||||
WAIT_EVENT_RELATION_MAP_WRITE,
|
WAIT_EVENT_RELATION_MAP_WRITE,
|
||||||
|
|
Loading…
Reference in New Issue