mirror of
https://github.com/postgres/postgres.git
synced 2025-07-18 17:42:25 +03:00
Change the pgstat logic so that the stats collector writes the stats file only
upon requests from backends, rather than on a fixed 500msec cycle. (There's still throttling logic to ensure it writes no more often than once per 500msec, though.) This should result in a significant reduction in stats file write traffic in typical scenarios where the stats are demanded only infrequently. This approach also means that the former difficulty with changing stats_temp_directory on-the-fly has gone away, so remove the caution about that as well as the thrashing we did to minimize the trouble window. In passing, also fix pgstat_report_stat() so that we will send a stats message if we have function call stats but not table stats to report; this fixes a bug in the recent patch to support function-call stats. Martin Pihlak
This commit is contained in:
@ -5,7 +5,7 @@
|
||||
*
|
||||
* Copyright (c) 2001-2008, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/pgstat.h,v 1.78 2008/08/15 08:37:40 mha Exp $
|
||||
* $PostgreSQL: pgsql/src/include/pgstat.h,v 1.79 2008/11/03 01:17:08 tgl Exp $
|
||||
* ----------
|
||||
*/
|
||||
#ifndef PGSTAT_H
|
||||
@ -33,6 +33,7 @@ typedef enum TrackFunctionsLevel
|
||||
typedef enum StatMsgType
|
||||
{
|
||||
PGSTAT_MTYPE_DUMMY,
|
||||
PGSTAT_MTYPE_INQUIRY,
|
||||
PGSTAT_MTYPE_TABSTAT,
|
||||
PGSTAT_MTYPE_TABPURGE,
|
||||
PGSTAT_MTYPE_DROPDB,
|
||||
@ -173,6 +174,19 @@ typedef struct PgStat_MsgDummy
|
||||
} PgStat_MsgDummy;
|
||||
|
||||
|
||||
/* ----------
|
||||
* PgStat_MsgInquiry Sent by a backend to ask the collector
|
||||
* to write the stats file.
|
||||
* ----------
|
||||
*/
|
||||
|
||||
typedef struct PgStat_MsgInquiry
|
||||
{
|
||||
PgStat_MsgHdr m_hdr;
|
||||
TimestampTz inquiry_time; /* minimum acceptable file timestamp */
|
||||
} PgStat_MsgInquiry;
|
||||
|
||||
|
||||
/* ----------
|
||||
* PgStat_TableEntry Per-table info in a MsgTabstat
|
||||
* ----------
|
||||
@ -392,6 +406,7 @@ typedef union PgStat_Msg
|
||||
{
|
||||
PgStat_MsgHdr msg_hdr;
|
||||
PgStat_MsgDummy msg_dummy;
|
||||
PgStat_MsgInquiry msg_inquiry;
|
||||
PgStat_MsgTabstat msg_tabstat;
|
||||
PgStat_MsgTabpurge msg_tabpurge;
|
||||
PgStat_MsgDropdb msg_dropdb;
|
||||
@ -413,7 +428,7 @@ typedef union PgStat_Msg
|
||||
* ------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#define PGSTAT_FILE_FORMAT_ID 0x01A5BC97
|
||||
#define PGSTAT_FILE_FORMAT_ID 0x01A5BC98
|
||||
|
||||
/* ----------
|
||||
* PgStat_StatDBEntry The collector's data per database
|
||||
@ -494,6 +509,7 @@ typedef struct PgStat_StatFuncEntry
|
||||
*/
|
||||
typedef struct PgStat_GlobalStats
|
||||
{
|
||||
TimestampTz stats_timestamp; /* time of stats file update */
|
||||
PgStat_Counter timed_checkpoints;
|
||||
PgStat_Counter requested_checkpoints;
|
||||
PgStat_Counter buf_written_checkpoints;
|
||||
|
Reference in New Issue
Block a user