Log restartpoints in the same fashion as checkpoints.
Prior to 9.0, restartpoints never created, deleted, or recycled WAL files, but now they can. This code makes log_checkpoints treat checkpoints and restartpoints symmetrically. It also adjusts up the documentation of the parameter to mention restartpoints. Fujii Masao. Docs by me, as suggested by Itagaki Takahiro.
This commit is contained in:
parent
cd7d748d51
commit
0af695fd43
@ -3362,10 +3362,9 @@ local0.* /var/log/postgresql
|
|||||||
</indexterm>
|
</indexterm>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Causes checkpoints to be logged in the server log. Some
|
Causes checkpoints and restartpoints to be logged in the server log.
|
||||||
statistics about each checkpoint are included in the log messages,
|
Some statistics are included in the log messages, including the number
|
||||||
including the number of buffers written and the time spent writing
|
of buffers written and the time spent writing them.
|
||||||
them.
|
|
||||||
This parameter can only be set in the <filename>postgresql.conf</>
|
This parameter can only be set in the <filename>postgresql.conf</>
|
||||||
file or on the server command line. The default is off.
|
file or on the server command line. The default is off.
|
||||||
</para>
|
</para>
|
||||||
|
@ -7058,10 +7058,14 @@ LogCheckpointEnd(bool restartpoint)
|
|||||||
|
|
||||||
if (restartpoint)
|
if (restartpoint)
|
||||||
elog(LOG, "restartpoint complete: wrote %d buffers (%.1f%%); "
|
elog(LOG, "restartpoint complete: wrote %d buffers (%.1f%%); "
|
||||||
|
"%d transaction log file(s) added, %d removed, %d recycled; "
|
||||||
"write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; "
|
"write=%ld.%03d s, sync=%ld.%03d s, total=%ld.%03d s; "
|
||||||
"sync files=%d, longest=%ld.%03d s, average=%ld.%03d s",
|
"sync files=%d, longest=%ld.%03d s, average=%ld.%03d s",
|
||||||
CheckpointStats.ckpt_bufs_written,
|
CheckpointStats.ckpt_bufs_written,
|
||||||
(double) CheckpointStats.ckpt_bufs_written * 100 / NBuffers,
|
(double) CheckpointStats.ckpt_bufs_written * 100 / NBuffers,
|
||||||
|
CheckpointStats.ckpt_segs_added,
|
||||||
|
CheckpointStats.ckpt_segs_removed,
|
||||||
|
CheckpointStats.ckpt_segs_recycled,
|
||||||
write_secs, write_usecs / 1000,
|
write_secs, write_usecs / 1000,
|
||||||
sync_secs, sync_usecs / 1000,
|
sync_secs, sync_usecs / 1000,
|
||||||
total_secs, total_usecs / 1000,
|
total_secs, total_usecs / 1000,
|
||||||
@ -7688,16 +7692,18 @@ CreateRestartPoint(int flags)
|
|||||||
SpinLockRelease(&xlogctl->info_lck);
|
SpinLockRelease(&xlogctl->info_lck);
|
||||||
LWLockRelease(WALInsertLock);
|
LWLockRelease(WALInsertLock);
|
||||||
|
|
||||||
if (log_checkpoints)
|
/*
|
||||||
{
|
* Prepare to accumulate statistics.
|
||||||
/*
|
*
|
||||||
* Prepare to accumulate statistics.
|
* Note: because it is possible for log_checkpoints to change while a
|
||||||
*/
|
* checkpoint proceeds, we always accumulate stats, even if
|
||||||
MemSet(&CheckpointStats, 0, sizeof(CheckpointStats));
|
* log_checkpoints is currently off.
|
||||||
CheckpointStats.ckpt_start_t = GetCurrentTimestamp();
|
*/
|
||||||
|
MemSet(&CheckpointStats, 0, sizeof(CheckpointStats));
|
||||||
|
CheckpointStats.ckpt_start_t = GetCurrentTimestamp();
|
||||||
|
|
||||||
|
if (log_checkpoints)
|
||||||
LogCheckpointStart(flags, true);
|
LogCheckpointStart(flags, true);
|
||||||
}
|
|
||||||
|
|
||||||
CheckPointGuts(lastCheckPoint.redo, flags);
|
CheckPointGuts(lastCheckPoint.redo, flags);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user