mirror of
https://github.com/postgres/postgres.git
synced 2025-07-20 05:03:10 +03:00
Rename CHECKPOINT_IMMEDIATE to CHECKPOINT_FAST.
The new name more accurately reflects the effects of this flag on a requested checkpoint. Checkpoint-related log messages (i.e., those controlled by the log_checkpoints configuration parameter) will now say "fast" instead of "immediate", too. Likewise, references to "immediate" checkpoints in the documentation have been updated to say "fast". This is preparatory work for a follow-up commit that will add a MODE option to the CHECKPOINT command. Author: Christoph Berg <myon@debian.org> Discussion: https://postgr.es/m/aDnaKTEf-0dLiEfz%40msg.df7cb.de
This commit is contained in:
@ -991,7 +991,7 @@ SELECT pg_backup_start(label => 'label', fast => false);
|
||||
usually preferable as it minimizes the impact on the running system. If you
|
||||
want to start the backup as soon as possible, pass <literal>true</literal> as
|
||||
the second parameter to <function>pg_backup_start</function> and it will
|
||||
request an immediate checkpoint, which will finish as fast as possible using
|
||||
request a fast checkpoint, which will finish as fast as possible using
|
||||
as much I/O as possible.
|
||||
</para>
|
||||
|
||||
|
@ -28973,7 +28973,7 @@ LOG: Grand total: 1651920 bytes in 201 blocks; 622360 free (88 chunks); 1029560
|
||||
will be stored.)
|
||||
If the optional second parameter is given as <literal>true</literal>,
|
||||
it specifies executing <function>pg_backup_start</function> as quickly
|
||||
as possible. This forces an immediate checkpoint which will cause a
|
||||
as possible. This forces a fast checkpoint which will cause a
|
||||
spike in I/O operations, slowing any concurrently executing queries.
|
||||
</para>
|
||||
<para>
|
||||
|
@ -37,7 +37,7 @@ CHECKPOINT
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <command>CHECKPOINT</command> command forces an immediate
|
||||
The <command>CHECKPOINT</command> command forces a fast
|
||||
checkpoint when the command is issued, without waiting for a
|
||||
regular checkpoint scheduled by the system (controlled by the settings in
|
||||
<xref linkend="runtime-config-wal-checkpoints"/>).
|
||||
|
@ -500,8 +500,9 @@ PostgreSQL documentation
|
||||
<term><option>--checkpoint={fast|spread}</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets checkpoint mode to fast (immediate) or spread (the default)
|
||||
Sets checkpoint mode to fast or spread
|
||||
(see <xref linkend="backup-lowlevel-base-backup"/>).
|
||||
The default is spread.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
@ -6486,7 +6486,7 @@ PerformRecoveryXLogAction(void)
|
||||
else
|
||||
{
|
||||
RequestCheckpoint(CHECKPOINT_END_OF_RECOVERY |
|
||||
CHECKPOINT_IMMEDIATE |
|
||||
CHECKPOINT_FAST |
|
||||
CHECKPOINT_WAIT);
|
||||
}
|
||||
|
||||
@ -6795,7 +6795,7 @@ ShutdownXLOG(int code, Datum arg)
|
||||
WalSndWaitStopping();
|
||||
|
||||
if (RecoveryInProgress())
|
||||
CreateRestartPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_IMMEDIATE);
|
||||
CreateRestartPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_FAST);
|
||||
else
|
||||
{
|
||||
/*
|
||||
@ -6807,7 +6807,7 @@ ShutdownXLOG(int code, Datum arg)
|
||||
if (XLogArchivingActive())
|
||||
RequestXLogSwitch(false);
|
||||
|
||||
CreateCheckPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_IMMEDIATE);
|
||||
CreateCheckPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_FAST);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6823,7 +6823,7 @@ LogCheckpointStart(int flags, bool restartpoint)
|
||||
(errmsg("restartpoint starting:%s%s%s%s%s%s%s%s",
|
||||
(flags & CHECKPOINT_IS_SHUTDOWN) ? " shutdown" : "",
|
||||
(flags & CHECKPOINT_END_OF_RECOVERY) ? " end-of-recovery" : "",
|
||||
(flags & CHECKPOINT_IMMEDIATE) ? " immediate" : "",
|
||||
(flags & CHECKPOINT_FAST) ? " fast" : "",
|
||||
(flags & CHECKPOINT_FORCE) ? " force" : "",
|
||||
(flags & CHECKPOINT_WAIT) ? " wait" : "",
|
||||
(flags & CHECKPOINT_CAUSE_XLOG) ? " wal" : "",
|
||||
@ -6835,7 +6835,7 @@ LogCheckpointStart(int flags, bool restartpoint)
|
||||
(errmsg("checkpoint starting:%s%s%s%s%s%s%s%s",
|
||||
(flags & CHECKPOINT_IS_SHUTDOWN) ? " shutdown" : "",
|
||||
(flags & CHECKPOINT_END_OF_RECOVERY) ? " end-of-recovery" : "",
|
||||
(flags & CHECKPOINT_IMMEDIATE) ? " immediate" : "",
|
||||
(flags & CHECKPOINT_FAST) ? " fast" : "",
|
||||
(flags & CHECKPOINT_FORCE) ? " force" : "",
|
||||
(flags & CHECKPOINT_WAIT) ? " wait" : "",
|
||||
(flags & CHECKPOINT_CAUSE_XLOG) ? " wal" : "",
|
||||
@ -7023,8 +7023,8 @@ update_checkpoint_display(int flags, bool restartpoint, bool reset)
|
||||
* flags is a bitwise OR of the following:
|
||||
* CHECKPOINT_IS_SHUTDOWN: checkpoint is for database shutdown.
|
||||
* CHECKPOINT_END_OF_RECOVERY: checkpoint is for end of WAL recovery.
|
||||
* CHECKPOINT_IMMEDIATE: finish the checkpoint ASAP,
|
||||
* ignoring checkpoint_completion_target parameter.
|
||||
* CHECKPOINT_FAST: finish the checkpoint ASAP, ignoring
|
||||
* checkpoint_completion_target parameter.
|
||||
* CHECKPOINT_FORCE: force a checkpoint even if no XLOG activity has occurred
|
||||
* since the last one (implied by CHECKPOINT_IS_SHUTDOWN or
|
||||
* CHECKPOINT_END_OF_RECOVERY).
|
||||
@ -8929,9 +8929,8 @@ issue_xlog_fsync(int fd, XLogSegNo segno, TimeLineID tli)
|
||||
* backup state and tablespace map.
|
||||
*
|
||||
* Input parameters are "state" (the backup state), "fast" (if true, we do
|
||||
* the checkpoint in immediate mode to make it faster), and "tablespaces"
|
||||
* (if non-NULL, indicates a list of tablespaceinfo structs describing the
|
||||
* cluster's tablespaces.).
|
||||
* the checkpoint in fast mode), and "tablespaces" (if non-NULL, indicates a
|
||||
* list of tablespaceinfo structs describing the cluster's tablespaces.).
|
||||
*
|
||||
* The tablespace map contents are appended to passed-in parameter
|
||||
* tablespace_map and the caller is responsible for including it in the backup
|
||||
@ -9059,11 +9058,11 @@ do_pg_backup_start(const char *backupidstr, bool fast, List **tablespaces,
|
||||
* during recovery means that checkpointer is running, we can use
|
||||
* RequestCheckpoint() to establish a restartpoint.
|
||||
*
|
||||
* We use CHECKPOINT_IMMEDIATE only if requested by user (via
|
||||
* passing fast = true). Otherwise this can take awhile.
|
||||
* We use CHECKPOINT_FAST only if requested by user (via passing
|
||||
* fast = true). Otherwise this can take awhile.
|
||||
*/
|
||||
RequestCheckpoint(CHECKPOINT_FORCE | CHECKPOINT_WAIT |
|
||||
(fast ? CHECKPOINT_IMMEDIATE : 0));
|
||||
(fast ? CHECKPOINT_FAST : 0));
|
||||
|
||||
/*
|
||||
* Now we need to fetch the checkpoint record location, and also
|
||||
|
@ -570,7 +570,7 @@ CreateDatabaseUsingFileCopy(Oid src_dboid, Oid dst_dboid, Oid src_tsid,
|
||||
* any CREATE DATABASE commands.
|
||||
*/
|
||||
if (!IsBinaryUpgrade)
|
||||
RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE |
|
||||
RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE |
|
||||
CHECKPOINT_WAIT | CHECKPOINT_FLUSH_UNLOGGED);
|
||||
|
||||
/*
|
||||
@ -673,7 +673,7 @@ CreateDatabaseUsingFileCopy(Oid src_dboid, Oid dst_dboid, Oid src_tsid,
|
||||
* strategy that avoids these problems.
|
||||
*/
|
||||
if (!IsBinaryUpgrade)
|
||||
RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE |
|
||||
RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE |
|
||||
CHECKPOINT_WAIT);
|
||||
}
|
||||
|
||||
@ -1870,7 +1870,7 @@ dropdb(const char *dbname, bool missing_ok, bool force)
|
||||
* Force a checkpoint to make sure the checkpointer has received the
|
||||
* message sent by ForgetDatabaseSyncRequests.
|
||||
*/
|
||||
RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
|
||||
RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
|
||||
|
||||
/* Close all smgr fds in all backends. */
|
||||
WaitForProcSignalBarrier(EmitProcSignalBarrier(PROCSIGNAL_BARRIER_SMGRRELEASE));
|
||||
@ -2120,7 +2120,7 @@ movedb(const char *dbname, const char *tblspcname)
|
||||
* On Windows, this also ensures that background procs don't hold any open
|
||||
* files, which would cause rmdir() to fail.
|
||||
*/
|
||||
RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT
|
||||
RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE | CHECKPOINT_WAIT
|
||||
| CHECKPOINT_FLUSH_UNLOGGED);
|
||||
|
||||
/* Close all smgr fds in all backends. */
|
||||
@ -2252,7 +2252,7 @@ movedb(const char *dbname, const char *tblspcname)
|
||||
* any unlogged operations done in the new DB tablespace before the
|
||||
* next checkpoint.
|
||||
*/
|
||||
RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
|
||||
RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
|
||||
|
||||
/*
|
||||
* Force synchronous commit, thus minimizing the window between
|
||||
|
@ -500,7 +500,7 @@ DropTableSpace(DropTableSpaceStmt *stmt)
|
||||
* mustn't delete. So instead, we force a checkpoint which will clean
|
||||
* out any lingering files, and try again.
|
||||
*/
|
||||
RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
|
||||
RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
|
||||
|
||||
/*
|
||||
* On Windows, an unlinked file persists in the directory listing
|
||||
|
@ -161,7 +161,7 @@ static pg_time_t last_xlog_switch_time;
|
||||
static void ProcessCheckpointerInterrupts(void);
|
||||
static void CheckArchiveTimeout(void);
|
||||
static bool IsCheckpointOnSchedule(double progress);
|
||||
static bool ImmediateCheckpointRequested(void);
|
||||
static bool FastCheckpointRequested(void);
|
||||
static bool CompactCheckpointerRequestQueue(void);
|
||||
static void UpdateSharedMemoryConfig(void);
|
||||
|
||||
@ -734,12 +734,12 @@ CheckArchiveTimeout(void)
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns true if an immediate checkpoint request is pending. (Note that
|
||||
* this does not check the *current* checkpoint's IMMEDIATE flag, but whether
|
||||
* there is one pending behind it.)
|
||||
* Returns true if a fast checkpoint request is pending. (Note that this does
|
||||
* not check the *current* checkpoint's FAST flag, but whether there is one
|
||||
* pending behind it.)
|
||||
*/
|
||||
static bool
|
||||
ImmediateCheckpointRequested(void)
|
||||
FastCheckpointRequested(void)
|
||||
{
|
||||
volatile CheckpointerShmemStruct *cps = CheckpointerShmem;
|
||||
|
||||
@ -747,7 +747,7 @@ ImmediateCheckpointRequested(void)
|
||||
* We don't need to acquire the ckpt_lck in this case because we're only
|
||||
* looking at a single flag bit.
|
||||
*/
|
||||
if (cps->ckpt_flags & CHECKPOINT_IMMEDIATE)
|
||||
if (cps->ckpt_flags & CHECKPOINT_FAST)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@ -760,7 +760,7 @@ ImmediateCheckpointRequested(void)
|
||||
* checkpoint_completion_target.
|
||||
*
|
||||
* The checkpoint request flags should be passed in; currently the only one
|
||||
* examined is CHECKPOINT_IMMEDIATE, which disables delays between writes.
|
||||
* examined is CHECKPOINT_FAST, which disables delays between writes.
|
||||
*
|
||||
* 'progress' is an estimate of how much of the work has been done, as a
|
||||
* fraction between 0.0 meaning none, and 1.0 meaning all done.
|
||||
@ -778,10 +778,10 @@ CheckpointWriteDelay(int flags, double progress)
|
||||
* Perform the usual duties and take a nap, unless we're behind schedule,
|
||||
* in which case we just try to catch up as quickly as possible.
|
||||
*/
|
||||
if (!(flags & CHECKPOINT_IMMEDIATE) &&
|
||||
if (!(flags & CHECKPOINT_FAST) &&
|
||||
!ShutdownXLOGPending &&
|
||||
!ShutdownRequestPending &&
|
||||
!ImmediateCheckpointRequested() &&
|
||||
!FastCheckpointRequested() &&
|
||||
IsCheckpointOnSchedule(progress))
|
||||
{
|
||||
if (ConfigReloadPending)
|
||||
@ -983,11 +983,11 @@ CheckpointerShmemInit(void)
|
||||
* flags is a bitwise OR of the following:
|
||||
* CHECKPOINT_IS_SHUTDOWN: checkpoint is for database shutdown.
|
||||
* CHECKPOINT_END_OF_RECOVERY: checkpoint is for end of WAL recovery.
|
||||
* CHECKPOINT_IMMEDIATE: finish the checkpoint ASAP,
|
||||
* CHECKPOINT_FAST: finish the checkpoint ASAP,
|
||||
* ignoring checkpoint_completion_target parameter.
|
||||
* CHECKPOINT_FORCE: force a checkpoint even if no XLOG activity has occurred
|
||||
* since the last one (implied by CHECKPOINT_IS_SHUTDOWN or
|
||||
* CHECKPOINT_END_OF_RECOVERY).
|
||||
* CHECKPOINT_END_OF_RECOVERY, and the CHECKPOINT command).
|
||||
* CHECKPOINT_WAIT: wait for completion before returning (otherwise,
|
||||
* just signal checkpointer to do it, and return).
|
||||
* CHECKPOINT_CAUSE_XLOG: checkpoint is requested due to xlog filling.
|
||||
@ -1009,7 +1009,7 @@ RequestCheckpoint(int flags)
|
||||
* There's no point in doing slow checkpoints in a standalone backend,
|
||||
* because there's no other backends the checkpoint could disrupt.
|
||||
*/
|
||||
CreateCheckPoint(flags | CHECKPOINT_IMMEDIATE);
|
||||
CreateCheckPoint(flags | CHECKPOINT_FAST);
|
||||
|
||||
/* Free all smgr objects, as CheckpointerMain() normally would. */
|
||||
smgrdestroyall();
|
||||
|
@ -3339,8 +3339,8 @@ UnpinBufferNoOwner(BufferDesc *buf)
|
||||
* BufferSync -- Write out all dirty buffers in the pool.
|
||||
*
|
||||
* This is called at checkpoint time to write out all dirty shared buffers.
|
||||
* The checkpoint request flags should be passed in. If CHECKPOINT_IMMEDIATE
|
||||
* is set, we disable delays between writes; if CHECKPOINT_IS_SHUTDOWN,
|
||||
* The checkpoint request flags should be passed in. If CHECKPOINT_FAST is
|
||||
* set, we disable delays between writes; if CHECKPOINT_IS_SHUTDOWN,
|
||||
* CHECKPOINT_END_OF_RECOVERY or CHECKPOINT_FLUSH_UNLOGGED is set, we write
|
||||
* even unlogged buffers, which are otherwise skipped. The remaining flags
|
||||
* currently have no effect here.
|
||||
|
@ -952,7 +952,7 @@ standard_ProcessUtility(PlannedStmt *pstmt,
|
||||
errdetail("Only roles with privileges of the \"%s\" role may execute this command.",
|
||||
"pg_checkpoint")));
|
||||
|
||||
RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_WAIT |
|
||||
RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_WAIT |
|
||||
(RecoveryInProgress() ? 0 : CHECKPOINT_FORCE));
|
||||
break;
|
||||
|
||||
|
@ -139,7 +139,7 @@ extern PGDLLIMPORT bool XLOG_DEBUG;
|
||||
#define CHECKPOINT_IS_SHUTDOWN 0x0001 /* Checkpoint is for shutdown */
|
||||
#define CHECKPOINT_END_OF_RECOVERY 0x0002 /* Like shutdown checkpoint, but
|
||||
* issued at end of WAL recovery */
|
||||
#define CHECKPOINT_IMMEDIATE 0x0004 /* Do it without delays */
|
||||
#define CHECKPOINT_FAST 0x0004 /* Do it without delays */
|
||||
#define CHECKPOINT_FORCE 0x0008 /* Force even if no activity */
|
||||
#define CHECKPOINT_FLUSH_UNLOGGED 0x0010 /* Flush unlogged tables */
|
||||
/* These are important to RequestCheckpoint */
|
||||
|
@ -91,7 +91,7 @@ $node_standby->wait_for_event('checkpointer', 'create-restart-point');
|
||||
# Check the logs that the restart point has started on standby. This is
|
||||
# optional, but let's be sure.
|
||||
ok( $node_standby->log_contains(
|
||||
"restartpoint starting: immediate wait", $logstart),
|
||||
"restartpoint starting: fast wait", $logstart),
|
||||
"restartpoint has started");
|
||||
|
||||
# Trigger promotion during the restart point.
|
||||
|
Reference in New Issue
Block a user